From 5182462cf1755ebc3d1d589c0cced37ad92ca528 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 3 Aug 2024 15:45:53 -0700 Subject: [PATCH] wordsplit_get_words need not fail * lib/wordsplit.c (wordsplit_get_words): Do not fail merely because realloc fails. Return void, since failure is no longer possible. --- lib/wordsplit.c | 8 ++------ lib/wordsplit.h | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/lib/wordsplit.c b/lib/wordsplit.c index d6b33af8..48243f21 100644 --- a/lib/wordsplit.c +++ b/lib/wordsplit.c @@ -2524,22 +2524,18 @@ wordsplit_free (struct wordsplit *ws) wordsplit_free_envbuf (ws); } -int +void wordsplit_get_words (struct wordsplit *ws, idx_t *wordc, char ***wordv) { /* Tell the memory manager that ws->ws_wordv can be shrunk. */ char **p = realloc (ws->ws_wordv, (ws->ws_wordc + 1) * sizeof (ws->ws_wordv[0])); - if (!p) - return -1; - *wordv = p; + *wordv = p ? p : ws->ws_wordv; *wordc = ws->ws_wordc; ws->ws_wordv = NULL; ws->ws_wordc = 0; ws->ws_wordn = 0; - - return 0; } static char const *const wordsplit_errstr[] = { diff --git a/lib/wordsplit.h b/lib/wordsplit.h index 4640d34c..b10c7b82 100644 --- a/lib/wordsplit.h +++ b/lib/wordsplit.h @@ -249,7 +249,7 @@ int wordsplit_len (const char *s, idx_t len, wordsplit_t *ws, unsigned flags); void wordsplit_free (wordsplit_t *ws); void wordsplit_free_words (wordsplit_t *ws); void wordsplit_free_envbuf (wordsplit_t *ws); -int wordsplit_get_words (wordsplit_t *ws, idx_t *wordc, char ***wordv); +void wordsplit_get_words (wordsplit_t *ws, idx_t *wordc, char ***wordv); int wordsplit_append (wordsplit_t *wsp, int argc, char **argv);