char **strv_free(char **l) {
strv_clear(l);
- free(l);
- return NULL;
+ return mfree(l);
}
char **strv_free_erase(char **l) {
return buf;
oom:
- free(buf);
- return NULL;
+ return mfree(buf);
}
#endif // 0
/* Like strv_extend(), but prepends rather than appends the new entry */
- if (!value)
- return 0;
-
n = strv_length(*l);
/* Increase and overflow check. */
if (m < n)
return -ENOMEM;
- v = strdup(value);
- if (!v)
- return -ENOMEM;
+ if (value) {
+ v = strdup(value);
+ if (!v)
+ return -ENOMEM;
+ } else
+ v = NULL;
c = realloc_multiply(*l, sizeof(char*), m);
if (!c) {
for (i = l; *i; i++)
strv_free(*i);
- free(l);
- return NULL;
+ return mfree(l);
}
char **strv_skip(char **l, size_t n) {