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
This commit is contained in:
djcb 2013-11-28 08:25:20 -05:00 committed by Colin Walters
parent 7d82d6dc5b
commit 49fc6d5b7e

View File

@ -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')