gdbus-codegen: Fix segfault when remote property is invalidated
authorTomas Bzatek <tbzatek@redhat.com>
Wed, 14 Sep 2011 17:02:01 +0000 (19:02 +0200)
committerTomas Bzatek <tbzatek@redhat.com>
Wed, 14 Sep 2011 17:02:01 +0000 (19:02 +0200)
The 'key' variable is no longer valid outside the cycle, owned and
probably already freed by GVariant. This causes apps to segfault
when proxy is constructed and a property on remote d-bus service
changes (actually is invalidated). Looks like a typo anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=659070

gio/gdbus-2.0/codegen/codegen.py

index ed9b60a0f7e4cb13787b3a3305b29abef0863842..3fe2382ac0946e82985e3eb31da61c0cb81ec8e5 100644 (file)
@@ -1723,7 +1723,7 @@ class CodeGenerator:
                      '  for (n = 0; invalidated_properties[n] != NULL; n++)\n'
                      '    {\n'
                      '      info = (_ExtendedGDBusPropertyInfo *) g_dbus_interface_info_lookup_property ((GDBusInterfaceInfo *) &_%s_interface_info, invalidated_properties[n]);\n'
-                     '      g_datalist_remove_data (&proxy->priv->qdata, key);\n'
+                     '      g_datalist_remove_data (&proxy->priv->qdata, invalidated_properties[n]);\n'
                      '      if (info != NULL)\n'
                      '        g_object_notify (G_OBJECT (proxy), info->hyphen_name);\n'
                      '    }\n'