]> git.ipfire.org Git - pakfire.git/commitdiff
libpakfire: Don't SEGV on unref with NULL
authorMichael Tremer <michael.tremer@ipfire.org>
Fri, 19 Jan 2018 16:04:54 +0000 (17:04 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Fri, 19 Jan 2018 16:05:44 +0000 (17:05 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/archive.c
src/libpakfire/include/pakfire/archive.h

index 349f286331c9268eef15fad8183681ee9311ce6a..b1a0b181311c1ead5f6454d65f36a11e8c6f6e44 100644 (file)
@@ -316,11 +316,15 @@ static void pakfire_archive_free(PakfireArchive archive) {
        pakfire_free(archive);
 }
 
-PAKFIRE_EXPORT void pakfire_archive_unref(PakfireArchive archive) {
+PAKFIRE_EXPORT PakfireArchive pakfire_archive_unref(PakfireArchive archive) {
+       if (!archive)
+               return NULL;
+
        if (--archive->nrefs > 0)
-               return;
+               return archive;
 
        pakfire_archive_free(archive);
+       return NULL;
 }
 
 static int pakfire_archive_parse_entry_format(PakfireArchive archive,
index 5de8a2877b13f0e4975770011e72b946c2c30cbe..62daef301fd42817c2ea0d83ae35372580404d3d 100644 (file)
@@ -40,7 +40,7 @@ typedef enum pakfire_archive_flags {
 
 PakfireArchive pakfire_archive_create(Pakfire pakfire);
 PakfireArchive pakfire_archive_ref(PakfireArchive archive);
-void pakfire_archive_unref(PakfireArchive archive);
+PakfireArchive pakfire_archive_unref(PakfireArchive archive);
 
 PakfireArchive pakfire_archive_open(Pakfire pakfire, const char* path);