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.
This commit is contained in:
Paul Eggert
2024-08-03 15:45:53 -07:00
parent 0ab451a420
commit 5182462cf1
2 changed files with 3 additions and 7 deletions

View File

@@ -2524,22 +2524,18 @@ wordsplit_free (struct wordsplit *ws)
wordsplit_free_envbuf (ws); wordsplit_free_envbuf (ws);
} }
int void
wordsplit_get_words (struct wordsplit *ws, idx_t *wordc, char ***wordv) wordsplit_get_words (struct wordsplit *ws, idx_t *wordc, char ***wordv)
{ {
/* Tell the memory manager that ws->ws_wordv can be shrunk. */ /* Tell the memory manager that ws->ws_wordv can be shrunk. */
char **p = realloc (ws->ws_wordv, char **p = realloc (ws->ws_wordv,
(ws->ws_wordc + 1) * sizeof (ws->ws_wordv[0])); (ws->ws_wordc + 1) * sizeof (ws->ws_wordv[0]));
if (!p) *wordv = p ? p : ws->ws_wordv;
return -1;
*wordv = p;
*wordc = ws->ws_wordc; *wordc = ws->ws_wordc;
ws->ws_wordv = NULL; ws->ws_wordv = NULL;
ws->ws_wordc = 0; ws->ws_wordc = 0;
ws->ws_wordn = 0; ws->ws_wordn = 0;
return 0;
} }
static char const *const wordsplit_errstr[] = { static char const *const wordsplit_errstr[] = {

View File

@@ -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 (wordsplit_t *ws);
void wordsplit_free_words (wordsplit_t *ws); void wordsplit_free_words (wordsplit_t *ws);
void wordsplit_free_envbuf (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); int wordsplit_append (wordsplit_t *wsp, int argc, char **argv);