diff --git a/src/basic/process-util.c b/src/basic/process-util.c index 7d4301eadb8..902265ac21e 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -179,7 +179,7 @@ int get_process_cmdline(pid_t pid, size_t max_columns, ProcessCmdlineFlags flags if (!ans) return -ENOMEM; - (void) str_realloc(&ans); + ans = str_realloc(ans); *line = TAKE_PTR(ans); return 0; } diff --git a/src/basic/string-util.h b/src/basic/string-util.h index 0dafe049ad1..1bc131f15b0 100644 --- a/src/basic/string-util.h +++ b/src/basic/string-util.h @@ -217,17 +217,13 @@ static inline void *memory_startswith_no_case(const void *p, size_t sz, const ch return (uint8_t*) p + n; } -static inline char* str_realloc(char **p) { - /* Reallocate *p to actual size */ +static inline char* str_realloc(char *p) { + /* Reallocate *p to actual size. Ignore failure, and return the original string on error. */ - if (!*p) + if (!p) return NULL; - char *t = realloc(*p, strlen(*p) + 1); - if (!t) - return NULL; - - return (*p = t); + return realloc(p, strlen(p) + 1) ?: p; } char* string_erase(char *x); diff --git a/src/basic/utf8.c b/src/basic/utf8.c index 46c3a463b95..244b8ade932 100644 --- a/src/basic/utf8.c +++ b/src/basic/utf8.c @@ -196,8 +196,7 @@ char *utf8_escape_invalid(const char *str) { } *s = '\0'; - (void) str_realloc(&p); - return p; + return str_realloc(p); } static int utf8_char_console_width(const char *str) { @@ -282,8 +281,7 @@ char *utf8_escape_non_printable_full(const char *str, size_t console_width) { finish: *s = '\0'; - (void) str_realloc(&p); - return p; + return str_realloc(p); } char *ascii_is_valid(const char *str) {