Check return value of asprintf
On the awful operating system GNU, asprintf leaves the destination pointer UNDEFINED on failure.master
parent
387f2c1fa3
commit
bd8997ef09
10
ignore.c
10
ignore.c
|
@ -45,17 +45,19 @@ const char *ignoreAdd(const char *pattern) {
|
|||
if (*ch == ' ') sp++;
|
||||
}
|
||||
char **dest = &ignore.patterns[ignore.len++];
|
||||
int n = 0;
|
||||
if (!ex && !sp) {
|
||||
asprintf(dest, "%s!*@* * * *", pattern);
|
||||
n = asprintf(dest, "%s!*@* * * *", pattern);
|
||||
} else if (sp < 1) {
|
||||
asprintf(dest, "%s * * *", pattern);
|
||||
n = asprintf(dest, "%s * * *", pattern);
|
||||
} else if (sp < 2) {
|
||||
asprintf(dest, "%s * *", pattern);
|
||||
n = asprintf(dest, "%s * *", pattern);
|
||||
} else if (sp < 3) {
|
||||
asprintf(dest, "%s *", pattern);
|
||||
n = asprintf(dest, "%s *", pattern);
|
||||
} else {
|
||||
*dest = strdup(pattern);
|
||||
}
|
||||
if (n < 0) err(EX_OSERR, "asprintf");
|
||||
if (!*dest) err(EX_OSERR, "strdup");
|
||||
return *dest;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue