vlc | branch: master | Hugo Beauzée-Luyssen <[email protected]> | Tue Aug 21 18:31:07 2018 +0200| [df7a0f02fce83065ad36b52192543add66bed983] | committer: Hugo Beauzée-Luyssen
core: config: Remove remaining calls to xmalloc/xstrdup > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=df7a0f02fce83065ad36b52192543add66bed983 --- src/config/core.c | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/src/config/core.c b/src/config/core.c index 8deba34101..0c9e4184f5 100644 --- a/src/config/core.c +++ b/src/config/core.c @@ -349,20 +349,41 @@ ssize_t config_GetPszChoices(const char *name, return cfg->list.psz_cb(name, values, texts); } - char **vals = xmalloc (sizeof (*vals) * count); - char **txts = xmalloc (sizeof (*txts) * count); + char **vals = malloc (sizeof (*vals) * count); + char **txts = malloc (sizeof (*txts) * count); + if (!vals || !txts) + { + free (vals); + free (txts); + errno = ENOMEM; + return -1; + } - for (size_t i = 0; i < count; i++) + size_t i; + for (i = 0; i < count; i++) { - vals[i] = xstrdup ((cfg->list.psz[i] != NULL) ? cfg->list.psz[i] : ""); + vals[i] = strdup ((cfg->list.psz[i] != NULL) ? cfg->list.psz[i] : ""); /* FIXME: use module_gettext() instead */ - txts[i] = xstrdup ((cfg->list_text[i] != NULL) + txts[i] = strdup ((cfg->list_text[i] != NULL) ? vlc_gettext (cfg->list_text[i]) : ""); + if (!vals[i] || !txts[i]) + goto error; } *values = vals; *texts = txts; return count; + +error: + for (size_t j = 0; j <= i; ++j) + { + free (vals[j]); + free (txts[j]); + } + free(vals); + free(txts); + errno = ENOMEM; + return -1; } static int confcmp (const void *a, const void *b) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
