From: Jürg Billeter Date: Sun, 27 Jun 2010 06:22:41 +0000 (+0200) Subject: dova: Fix value_size for struct types X-Git-Tag: 0.9.3~91 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4799472aa08ce9b8fd6aae9f34f53d1c541c714e;p=thirdparty%2Fvala.git dova: Fix value_size for struct types --- diff --git a/codegen/valadovavaluemodule.vala b/codegen/valadovavaluemodule.vala index 1b723fe68..ff59302af 100644 --- a/codegen/valadovavaluemodule.vala +++ b/codegen/valadovavaluemodule.vala @@ -386,6 +386,12 @@ internal class Vala.DovaValueModule : DovaObjectModule { type_init_call.add_argument (new CCodeIdentifier ("%s_type".printf (st.get_lower_case_cname ()))); type_init_block.add_statement (new CCodeExpressionStatement (type_init_call)); + // workaround: set value_size again as it is currently overwritten by dova_object_type_init + set_size = new CCodeFunctionCall (new CCodeIdentifier ("dova_type_set_value_size")); + set_size.add_argument (new CCodeIdentifier ("%s_type".printf (st.get_lower_case_cname ()))); + set_size.add_argument (sizeof_call); + type_init_block.add_statement (new CCodeExpressionStatement (set_size)); + type_fun.block.add_statement (new CCodeIfStatement (new CCodeUnaryExpression (CCodeUnaryOperator.LOGICAL_NEGATION, new CCodeIdentifier ("%s_type".printf (st.get_lower_case_cname ()))), type_init_block)); type_fun.block.add_statement (new CCodeReturnStatement (new CCodeIdentifier ("%s_type".printf (st.get_lower_case_cname ()))));