]> git.draconx.ca Git - upkg.git/blobdiff - src/uobject/uobject.c
Ensure object property references are released.
[upkg.git] / src / uobject / uobject.c
index 9c5bfa13a3ccc9949a4cc687dab2067aa83f8c3b..867390f2d7c07ced6bba9de4a3f20c0464d2b869 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  upkg: tool for manipulating Unreal Tournament packages.
- *  Copyright © 2009-2011 Nick Bowler
+ *  Copyright © 2009-2012, 2015, 2020 Nick Bowler
  *
  *  This program is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
@@ -16,6 +16,7 @@
  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+#include <config.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -375,6 +376,12 @@ static unsigned long deserialize_property(UObject *uo, struct prop_head *head)
                if (rc != 0)
                        return 0;
                g_object_set_property(G_OBJECT(uo), head->prop_name, &val);
+
+               /*
+                * g_object_set_property increments refcount,
+                * release our reference.
+                */
+               g_object_unref(g_value_get_object(&val));
                break;
        case PROPERTY_FLOAT:
                if (head->size != 4 || priv->nbuf-len < head->size)