From: djcb Date: Thu, 28 Nov 2013 13:25:20 +0000 (-0500) Subject: gdbus-codegen: Fix leak in property setter X-Git-Tag: 2.39.2~64 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=49fc6d5b7e0714e783565f083aaca1de598256c0;p=platform%2Fupstream%2Fglib.git gdbus-codegen: Fix leak in property setter Comparing the code generated for the setter and other methods without (real) return value, I noticed that the setter does not unref the gvariant it gets. https://bugzilla.gnome.org/show_bug.cgi?id=719472 --- diff --git a/gio/gdbus-2.0/codegen/codegen.py b/gio/gdbus-2.0/codegen/codegen.py index 82e5787..e72cb31 100644 --- a/gio/gdbus-2.0/codegen/codegen.py +++ b/gio/gdbus-2.0/codegen/codegen.py @@ -1629,14 +1629,20 @@ class CodeGenerator: '{\n'%(i.name_lower)) self.c.write(' const _ExtendedGDBusPropertyInfo *info = user_data;\n' ' GError *error;\n' + ' GVariant *_ret;\n' ' error = NULL;\n' - ' if (!g_dbus_proxy_call_finish (proxy, res, &error))\n' + ' _ret = g_dbus_proxy_call_finish (proxy, res, &error);\n' + ' if (!_ret)\n' ' {\n' ' g_warning ("Error setting property \'%%s\' on interface %s: %%s (%%s, %%d)",\n' ' info->parent_struct.name, \n' ' error->message, g_quark_to_string (error->domain), error->code);\n' ' g_error_free (error);\n' ' }\n' + ' else\n' + ' {\n' + ' g_variant_unref (_ret);\n' + ' }\n' %(i.name)) self.c.write('}\n' '\n')