diff options
author | Luca Bruno <lucabru@src.gnome.org> | 2011-06-02 20:08:24 +0200 |
---|---|---|
committer | Luca Bruno <lucabru@src.gnome.org> | 2011-06-02 20:09:05 +0200 |
commit | 2c9bb02e005856dd580ad59250a6fce53b072d4c (patch) | |
tree | 188b8ed830f0ec47323fc10926eef8ebb4615d50 | |
parent | ef22cd29f0f51adfcea391d067610a8942925041 (diff) | |
download | vala-2c9bb02e005856dd580ad59250a6fce53b072d4c.tar.gz |
D-Bus: Require class prerequisite for dbus interfaces
Fixes bug 651715.
-rw-r--r-- | codegen/valagdbusservermodule.vala | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/codegen/valagdbusservermodule.vala b/codegen/valagdbusservermodule.vala index 8c1507d8e..6593d08a5 100644 --- a/codegen/valagdbusservermodule.vala +++ b/codegen/valagdbusservermodule.vala @@ -1225,7 +1225,13 @@ public class Vala.GDBusServerModule : GDBusClientModule { alloc_data.add_argument (new CCodeConstant ("3")); ccode.add_assignment (new CCodeIdentifier ("data"), alloc_data); - var ref_object = new CCodeFunctionCall (new CCodeIdentifier (sym.get_ref_function ())); + var ref_function = sym.get_ref_function (); + if (sym is Interface && ref_function == null) { + Report.error (sym.source_reference, "missing class prerequisite for interface `%s', add GLib.Object to interface declaration if unsure".printf (sym.get_full_name ())); + return; + } + + var ref_object = new CCodeFunctionCall (new CCodeIdentifier (ref_function)); ref_object.add_argument (new CCodeIdentifier ("object")); ccode.add_assignment (new CCodeElementAccess (new CCodeIdentifier ("data"), new CCodeConstant ("0")), ref_object); |