X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fpipecmd%2Fpipecmd.c;h=22903bb34627b0df674f7c14b78dfe7a7907bb74;hb=5877402640cff05f779b23a730e4cc62d729113f;hp=42c6689445876e5b832520bd55a1e1aecf288c43;hpb=97a1ba3d6fac93e680e3d95cef930dea4fdd0822;p=ccan diff --git a/ccan/pipecmd/pipecmd.c b/ccan/pipecmd/pipecmd.c index 42c66894..22903bb3 100644 --- a/ccan/pipecmd/pipecmd.c +++ b/ccan/pipecmd/pipecmd.c @@ -16,9 +16,12 @@ static char **gather_args(const char *arg0, va_list ap) arr[0] = (char *)arg0; while ((arr[n++] = va_arg(ap, char *)) != NULL) { - arr = realloc(arr, sizeof(char *) * (n + 1)); - if (!arr) + char **narr = realloc(arr, sizeof(char *) * (n + 1)); + if (!narr) { + free(arr); return NULL; + } + arr = narr; } return arr; } @@ -119,7 +122,9 @@ pid_t pipecmdarr(int *fd_fromchild, int *fd_tochild, int *fd_errfromchild, child_errno_fail: err = errno; - write(execfail[1], &err, sizeof(err)); + /* Gcc's warn-unused-result fail. */ + if (write(execfail[1], &err, sizeof(err))) + ; exit(127); }