]> git.ipfire.org Git - thirdparty/kmod.git/commitdiff
libkmod-module: Do not free the list in kmod_module_info_append
authorMichal Marek <mmarek@suse.cz>
Wed, 16 Jan 2013 16:51:57 +0000 (17:51 +0100)
committerLucas De Marchi <lucas.demarchi@profusion.mobi>
Fri, 18 Jan 2013 01:48:43 +0000 (23:48 -0200)
In error case, just return NULL and let the caller free the list.

libkmod/libkmod-module.c

index 176a5a8862b0c6ed22349a0e1b343250a25f0f8a..2f4acd5726910cc3ad99f47b4ed6e8ee23b1bd85 100644 (file)
@@ -2100,16 +2100,13 @@ static struct kmod_list *kmod_module_info_append(struct kmod_list **list, const
        struct kmod_list *n;
 
        info = kmod_module_info_new(key, keylen, value, valuelen);
-       if (info == NULL) {
-               kmod_module_info_free_list(*list);
+       if (info == NULL)
                return NULL;
-       }
        n = kmod_list_append(*list, info);
-       if (n == NULL) {
+       if (n != NULL)
+               *list = n;
+       else
                kmod_module_info_free(info);
-               kmod_module_info_free_list(*list);
-       }
-       *list = n;
        return n;
 }
 
@@ -2171,6 +2168,10 @@ KMOD_EXPORT int kmod_module_get_info(const struct kmod_module *mod, struct kmod_
        ret = count;
 
 list_error:
+       if (ret < 0) {
+               kmod_module_info_free_list(*list);
+               *list = NULL;
+       }
        free(strings);
        return ret;
 }