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