Add NULL to end of g_filename_complete_get_completions() return value

g_filename_complete_get_completions() return value is meant to be a
g_strfreev-compatible array i.e. NULL-terminated. However, pointer arrays
aren't automagically NULL-terminated. This fixes bug 586868
This commit is contained in:
Tom Parker 2009-06-26 22:43:31 -04:00 committed by Matthias Clasen
parent 657d0ad918
commit e7a258692c

View File

@ -470,7 +470,7 @@ g_filename_completer_get_completion_suffix (GFilenameCompleter *completer,
**/ **/
char ** char **
g_filename_completer_get_completions (GFilenameCompleter *completer, g_filename_completer_get_completions (GFilenameCompleter *completer,
const char *initial_text) const char *initial_text)
{ {
GList *possible_matches, *l; GList *possible_matches, *l;
char *prefix; char *prefix;
@ -486,14 +486,16 @@ g_filename_completer_get_completions (GFilenameCompleter *completer,
for (l = possible_matches; l != NULL; l = l->next) for (l = possible_matches; l != NULL; l = l->next)
{ {
possible_match = l->data; possible_match = l->data;
if (g_str_has_prefix (possible_match, prefix)) if (g_str_has_prefix (possible_match, prefix))
g_ptr_array_add (res, g_ptr_array_add (res,
g_strconcat (initial_text, possible_match + strlen (prefix), NULL)); g_strconcat (initial_text, possible_match + strlen (prefix), NULL));
} }
g_free (prefix); g_free (prefix);
g_ptr_array_add (res, NULL);
return (char**)g_ptr_array_free (res, FALSE); return (char**)g_ptr_array_free (res, FALSE);
} }