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