Create an empty package iterator when we don't know about the given file.
authorJames Bowes <jbowes@redhat.com>
Tue, 24 Jun 2008 01:20:16 +0000 (21:20 -0400)
committerJames Bowes <jbowes@redhat.com>
Tue, 24 Jun 2008 01:20:16 +0000 (21:20 -0400)
This is an easy way to stop segfaults when trying to destroy iterators for
unknown files.

librazor/iterator.c

index e684d7b..1169630 100644 (file)
@@ -36,6 +36,13 @@ razor_package_iterator_create_with_index(struct razor_set *set,
        return pi;
 }
 
+static struct razor_package_iterator *
+razor_package_iterator_create_empty(struct razor_set *set)
+{
+       struct razor_package_iterator *pi;
+       return zalloc(sizeof *pi);
+}
+
 RAZOR_EXPORT struct razor_package_iterator *
 razor_package_iterator_create(struct razor_set *set)
 {
@@ -78,7 +85,7 @@ razor_package_iterator_create_for_file(struct razor_set *set,
 
        entry = razor_set_find_entry(set, set->files.data, filename);
        if (entry == NULL)
-               return NULL;
+               return razor_package_iterator_create_empty(set);
 
        index = list_first(&entry->packages, &set->package_pool);
        return razor_package_iterator_create_with_index(set, index);