summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Bruno <lucabru@src.gnome.org>2011-06-02 20:08:24 +0200
committerLuca Bruno <lucabru@src.gnome.org>2011-06-02 20:09:05 +0200
commit2c9bb02e005856dd580ad59250a6fce53b072d4c (patch)
tree188b8ed830f0ec47323fc10926eef8ebb4615d50
parentef22cd29f0f51adfcea391d067610a8942925041 (diff)
downloadvala-2c9bb02e005856dd580ad59250a6fce53b072d4c.tar.gz
D-Bus: Require class prerequisite for dbus interfaces
Fixes bug 651715.
-rw-r--r--codegen/valagdbusservermodule.vala8
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);