diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2022-01-03 13:59:36 +0100 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2022-01-03 13:59:36 +0100 |
commit | 29470dbcfc149d241886dcecb7fd6f4207dc7917 (patch) | |
tree | 3b189403212e634f1c6c4b01fa8a70e3d030d898 /codegen/valaccodebasemodule.vala | |
parent | 5738468d939f933a9d4b22707811ecfff2e936ed (diff) | |
download | vala-29470dbcfc149d241886dcecb7fd6f4207dc7917.tar.gz |
codegen: Cast given default-value of struct with possible member initializer
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1272
Diffstat (limited to 'codegen/valaccodebasemodule.vala')
-rw-r--r-- | codegen/valaccodebasemodule.vala | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala index 2e7df70d5..db9a498cc 100644 --- a/codegen/valaccodebasemodule.vala +++ b/codegen/valaccodebasemodule.vala @@ -6544,7 +6544,11 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator { var array_type = type as ArrayType; if (type.type_symbol != null && !type.nullable && (on_error ? get_ccode_default_value_on_error (type.type_symbol) : get_ccode_default_value (type.type_symbol)) != "") { - return new CCodeConstant (on_error ? get_ccode_default_value_on_error (type.type_symbol) : get_ccode_default_value (type.type_symbol)); + CCodeExpression val = new CCodeConstant (on_error ? get_ccode_default_value_on_error (type.type_symbol) : get_ccode_default_value (type.type_symbol)); + if (st != null && st.get_fields ().size > 0) { + val = new CCodeCastExpression (val, get_ccode_name (st)); + } + return val; } else if (initializer_expression && !type.nullable && (st != null || (array_type != null && array_type.fixed_length))) { // 0-initialize struct with struct initializer { 0 } |