]> git.draconx.ca Git - upkg.git/blobdiff - src/uobject/uobject.c
Ensure object property references are released.
[upkg.git] / src / uobject / uobject.c
index c3cc24662ce4a69980b0086c8693c4b651f05d0a..867390f2d7c07ced6bba9de4a3f20c0464d2b869 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  upkg: tool for manipulating Unreal Tournament packages.
- *  Copyright © 2009-2012, 2015 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
@@ -376,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)