From 3128c1e9a567fc168c191702b991106cef917363 Mon Sep 17 00:00:00 2001 From: Philip Withnall Date: Sat, 31 Jan 2015 22:22:16 +0000 Subject: [PATCH] girepository: Fix NULL return from g_irepository_get_dependencies() If a typelib had no dependencies, g_irepository_get_dependencies() would return NULL, rather than an empty NULL-terminated vector. https://bugzilla.gnome.org/show_bug.cgi?id=743782 --- girepository.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/girepository.c b/girepository.c index 931385ff0..fb91afaac 100644 --- a/girepository.c +++ b/girepository.c @@ -253,6 +253,8 @@ build_typelib_key (const char *name, const char *source) return g_string_free (str, FALSE); } +/* Note: Returns %NULL (not an empty %NULL-terminated array) if there are no + * dependencies. */ static char ** get_typelib_dependencies (GITypelib *typelib) { @@ -450,6 +452,7 @@ g_irepository_get_dependencies (GIRepository *repository, const char *namespace) { GITypelib *typelib; + gchar **deps; g_return_val_if_fail (namespace != NULL, NULL); @@ -458,7 +461,12 @@ g_irepository_get_dependencies (GIRepository *repository, typelib = get_registered (repository, namespace, NULL); g_return_val_if_fail (typelib != NULL, NULL); - return get_typelib_dependencies (typelib); + /* Ensure we always return a non-%NULL vector. */ + deps = get_typelib_dependencies (typelib); + if (deps == NULL) + deps = g_strsplit ("", "|", 0); + + return deps; } /**