summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuerg Billeter <j@bitron.ch>2007-09-14 20:45:31 +0000
committerJürg Billeter <juergbi@src.gnome.org>2007-09-14 20:45:31 +0000
commit5438251d1fad83656da7e0a0fcbec5c1a571f008 (patch)
tree4f1bad799096eb8be9b18fab208dba437b263a59
parent7383ea66aaf2821f9f422a654f1335590205077e (diff)
downloadvala-5438251d1fad83656da7e0a0fcbec5c1a571f008.tar.gz
simplify dispose function, fixes bug 476700
2007-09-14 Juerg Billeter <j@bitron.ch> * gobject/valacodegeneratorclass.vala: simplify dispose function, fixes bug 476700 svn path=/trunk/; revision=604
-rw-r--r--ChangeLog5
-rw-r--r--gobject/valacodegeneratorclass.vala27
2 files changed, 9 insertions, 23 deletions
diff --git a/ChangeLog b/ChangeLog
index c1b7ed1e5..bbf2746c3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2007-09-14 Jürg Billeter <j@bitron.ch>
+ * gobject/valacodegeneratorclass.vala: simplify dispose function,
+ fixes bug 476700
+
+2007-09-14 Jürg Billeter <j@bitron.ch>
+
* gobject/valacodegeneratorinvocationexpression.vala,
gobject/valacodegeneratorsignal.vala: fix late bound methods and
signals, fixes bug 476953
diff --git a/gobject/valacodegeneratorclass.vala b/gobject/valacodegeneratorclass.vala
index 247ae2fe5..c743e68e7 100644
--- a/gobject/valacodegeneratorclass.vala
+++ b/gobject/valacodegeneratorclass.vala
@@ -427,29 +427,10 @@ public class Vala.CodeGenerator {
cblock.add_statement (instance_dispose_fragment);
- cdecl = new CCodeDeclaration ("%sClass *".printf (cl.get_cname ()));
- cdecl.add_declarator (new CCodeVariableDeclarator ("klass"));
- cblock.add_statement (cdecl);
-
- cdecl = new CCodeDeclaration ("GObjectClass *");
- cdecl.add_declarator (new CCodeVariableDeclarator ("parent_class"));
- cblock.add_statement (cdecl);
-
-
- ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_type_class_peek"));
- ccall.add_argument (new CCodeIdentifier (cl.get_upper_case_cname ("TYPE_")));
- var ccast = new CCodeFunctionCall (new CCodeIdentifier ("%s_CLASS".printf (cl.get_upper_case_cname (null))));
- ccast.add_argument (ccall);
- cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeIdentifier ("klass"), ccast)));
-
- ccall = new CCodeFunctionCall (new CCodeIdentifier ("g_type_class_peek_parent"));
- ccall.add_argument (new CCodeIdentifier ("klass"));
- ccast = new CCodeFunctionCall (new CCodeIdentifier ("G_OBJECT_CLASS"));
- ccast.add_argument (ccall);
- cblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeIdentifier ("parent_class"), ccast)));
-
-
- ccall = new CCodeFunctionCall (new CCodeMemberAccess.pointer (new CCodeIdentifier ("parent_class"), "dispose"));
+ // chain up to dispose function of the base class
+ var ccast = new CCodeFunctionCall (new CCodeIdentifier ("G_OBJECT_CLASS"));
+ ccast.add_argument (new CCodeIdentifier ("%s_parent_class".printf (cl.get_lower_case_cname (null))));
+ ccall = new CCodeFunctionCall (new CCodeMemberAccess.pointer (ccast, "dispose"));
ccall.add_argument (new CCodeIdentifier ("obj"));
cblock.add_statement (new CCodeExpressionStatement (ccall));