forked from PsychoticNinja/irssi
Make split functions return an array with NULL instead of NULL
This avoids undefined behavior in functions that call these split functions and expect an array back instead of just a NULL pointer.
This commit is contained in:
parent
beb2beba3b
commit
0840eaec7b
@ -198,7 +198,12 @@ char **recode_split(const SERVER_REC *server, const char *str,
|
||||
int n = 0;
|
||||
char **ret;
|
||||
|
||||
g_return_val_if_fail(str != NULL, NULL);
|
||||
g_warn_if_fail(str != NULL);
|
||||
if (str == NULL) {
|
||||
ret = g_new(char *, 1);
|
||||
ret[0] = NULL;
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (settings_get_bool("recode")) {
|
||||
to = find_conversion(server, target);
|
||||
|
@ -116,11 +116,14 @@ static char **split_line(const SERVER_REC *server, const char *line,
|
||||
* the code much simpler. It's worth it.
|
||||
*/
|
||||
len -= strlen(recoded_start) + strlen(recoded_end);
|
||||
g_warn_if_fail(len > 0);
|
||||
if (len <= 0) {
|
||||
/* There is no room for anything. */
|
||||
g_free(recoded_start);
|
||||
g_free(recoded_end);
|
||||
return NULL;
|
||||
lines = g_new(char *, 1);
|
||||
lines[0] = NULL;
|
||||
return lines;
|
||||
}
|
||||
|
||||
lines = recode_split(server, line, target, len, onspace);
|
||||
|
Loading…
x
Reference in New Issue
Block a user