From: Philip Van Hoof Date: Thu, 29 Jan 2009 19:35:46 +0000 (+0000) Subject: Checking for vstore in vala_dbus_register_object. Fixes a crash when you X-Git-Tag: 0.5.7~62 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=382612165ae0e48c700c09da0cb9bd8f979fcbee;p=thirdparty%2Fvala.git Checking for vstore in vala_dbus_register_object. Fixes a crash when you 2009-01-29 Philip Van Hoof * gobject/valaccodebasemodule.vala: Checking for vstore in vala_dbus_register_object. Fixes a crash when you use conn.register_object with an instance that isn't a DBus one svn path=/trunk/; revision=2408 --- diff --git a/ChangeLog b/ChangeLog index 51d4166c2..d423afbcd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2009-01-29 Philip Van Hoof + + * gobject/valaccodebasemodule.vala: + + Checking for vstore in vala_dbus_register_object. Fixes a crash when + you use conn.register_object with an instance that isn't a DBus one + 2009-01-29 Jürg Billeter * vala/valapropertyaccessor.vala: diff --git a/gobject/valaccodebasemodule.vala b/gobject/valaccodebasemodule.vala index 7bc14c7c8..7dbe3f3a6 100644 --- a/gobject/valaccodebasemodule.vala +++ b/gobject/valaccodebasemodule.vala @@ -452,7 +452,18 @@ public class Vala.CCodeBaseModule : CCodeModule { cregister.add_argument (new CCodeIdentifier ("connection")); cregister.add_argument (new CCodeIdentifier ("path")); cregister.add_argument (new CCodeIdentifier ("object")); - block.add_statement (new CCodeExpressionStatement (cregister)); + + var ifblock = new CCodeBlock (); + ifblock.add_statement (new CCodeExpressionStatement (cregister)); + + var elseblock = new CCodeBlock (); + + var warn = new CCodeFunctionCall (new CCodeIdentifier ("g_warning")); + warn.add_argument (new CCodeConstant ("\"Object does not implement any D-Bus interface\"")); + + elseblock.add_statement (new CCodeExpressionStatement(warn)); + + block.add_statement (new CCodeIfStatement (new CCodeIdentifier ("vtable"), ifblock, elseblock)); source_type_member_definition.append (cfunc); }