diff options
author | Juerg Billeter <j@bitron.ch> | 2007-09-14 20:45:31 +0000 |
---|---|---|
committer | Jürg Billeter <juergbi@src.gnome.org> | 2007-09-14 20:45:31 +0000 |
commit | 5438251d1fad83656da7e0a0fcbec5c1a571f008 (patch) | |
tree | 4f1bad799096eb8be9b18fab208dba437b263a59 | |
parent | 7383ea66aaf2821f9f422a654f1335590205077e (diff) | |
download | vala-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-- | ChangeLog | 5 | ||||
-rw-r--r-- | gobject/valacodegeneratorclass.vala | 27 |
2 files changed, 9 insertions, 23 deletions
@@ -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)); |