https://bugzilla.redhat.com/show_bug.cgi?id=858799
char **strv_copy(char **l) {
char **r, **k;
char **strv_copy(char **l) {
char **r, **k;
- k = r = new(char*, strv_length(l)+1);
- if (!k)
+ k = r = new(char*, strv_length(l) + 1);
+ if (!r)
- for (; *l; k++, l++)
- if (!(*k = strdup(*l)))
- goto fail;
+ for (; *l; k++, l++) {
+ *k = strdup(*l);
+ if (!*k) {
+ strv_free(r);
+ return NULL;
+ }
+ }
-
-fail:
- for (k--; k >= r; k--)
- free(*k);
-
- free(r);
-
- return NULL;
}
unsigned strv_length(char **l) {
}
unsigned strv_length(char **l) {
-
- for (; i > 0; i--)
- if (a[i-1])
- free(a[i-1]);
-
- free(a);
-
FOREACH_WORD_SEPARATOR(w, l, s, separator, state)
n++;
FOREACH_WORD_SEPARATOR(w, l, s, separator, state)
n++;
- if (!(r = new(char*, n+1)))
+ r = new(char*, n+1);
+ if (!r)
- FOREACH_WORD_SEPARATOR(w, l, s, separator, state)
- if (!(r[i++] = strndup(w, l))) {
+ FOREACH_WORD_SEPARATOR(w, l, s, separator, state) {
+ r[i] = strndup(w, l);
+ if (!r[i]) {
strv_free(r);
return NULL;
}
strv_free(r);
return NULL;
}
FOREACH_WORD_QUOTED(w, l, s, state)
n++;
FOREACH_WORD_QUOTED(w, l, s, state)
n++;
- if (!(r = new(char*, n+1)))
+ r = new(char*, n+1);
+ if (!r)
- FOREACH_WORD_QUOTED(w, l, s, state)
- if (!(r[i++] = cunescape_length(w, l))) {
+ FOREACH_WORD_QUOTED(w, l, s, state) {
+ r[i] = cunescape_length(w, l);
+ if (!r[i]) {
strv_free(r);
return NULL;
}
strv_free(r);
return NULL;
}
- if (!(r = new(char, n+1)))
+ r = new(char, n+1);
+ if (!r)
- for (k = r; *l; k++, l++)
- if (!(*k = strdup(*l)))
+ for (k = r; *l; k++, l++) {
+ *k = strdup(*l);
+ if (!*k)
- if (!(*(k++) = strdup(s)))
+ k[0] = strdup(s);
+ if (!k[0])
- for (k--; k >= r; k--)
- free(*k);
-
- free(r);
-
- if (!(*j = strdup(*a)))
+ *j = strdup(*a);
+ if (!*j)
- if (!(r = new(char*, n+1)))
+ r = new(char*, n+1);
+ if (!r)
-
- for (k--; k >= r; k--)
- free(*k);
-
- free(r);
/* Overrides the env var setting of p, returns a new copy */
/* Overrides the env var setting of p, returns a new copy */
- if (!(r = new(char*, strv_length(x)+2)))
+ r = new(char*, strv_length(x)+2);
+ if (!r)
- for (k--; k >= r; k--)
- free(*k);
-
- free(r);
-
- if (!(v = new0(char*, c+1)))
+ v = new0(char*, c+1);
+ if (!v)
e = memchr(p, 0, s + l - p);
e = memchr(p, 0, s + l - p);
- if (!(v[i++] = strndup(p, e ? e - p : s + l - p))) {
+ v[i] = strndup(p, e ? e - p : s + l - p);
+ if (!v[i]) {
strv_free(v);
return NULL;
}
strv_free(v);
return NULL;
}