1
0
mirror of https://github.com/irssi/irssi.git synced 2024-09-01 04:14:16 -04:00

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:
Joseph Bisch 2017-10-18 14:52:04 -04:00 committed by ailin-nemui
parent beb2beba3b
commit 0840eaec7b
2 changed files with 10 additions and 2 deletions

View File

@ -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);

View File

@ -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);