From: Rico Tzschichholz Date: Sun, 7 Mar 2021 12:42:16 +0000 (+0100) Subject: vala: Add missing null-check in DataType.get_type_signature() X-Git-Tag: 0.51.91~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e4991e34c6f8075d6e3b53eb97a32340687f3072;p=thirdparty%2Fvala.git vala: Add missing null-check in DataType.get_type_signature() If an instance struct field can not be resolved to a valid type-signature then bail. This fixes criticals like: g_string_insert_len: assertion 'len == 0 || val != NULL' failed --- diff --git a/tests/Makefile.am b/tests/Makefile.am index a74714d9e..32bd92fc5 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -668,6 +668,7 @@ TESTS = \ generics/arrays-not-supported-3.test \ generics/constructor-chain-up.vala \ generics/floating-type-cast.vala \ + generics/gvariant-serialization.test \ generics/inference-argument-may-fail.vala \ generics/inference-static-function.vala \ generics/integer-type-cast.vala \ diff --git a/tests/generics/gvariant-serialization.test b/tests/generics/gvariant-serialization.test new file mode 100644 index 000000000..e9f9ad593 --- /dev/null +++ b/tests/generics/gvariant-serialization.test @@ -0,0 +1,10 @@ +Invalid Code + +struct Foo { + public G g; +} + +void main () { + var foo = new Foo[] {}; + Variant v = foo; +} diff --git a/vala/valadatatype.vala b/vala/valadatatype.vala index 9c5a6846c..cca88d205 100644 --- a/vala/valadatatype.vala +++ b/vala/valadatatype.vala @@ -583,7 +583,12 @@ public abstract class Vala.DataType : CodeNode { str.append_c ('('); foreach (Field f in st.get_fields ()) { if (f.binding == MemberBinding.INSTANCE) { - str.append (f.variable_type.get_type_signature (f)); + var s = f.variable_type.get_type_signature (f); + if (s != null) { + str.append (s); + } else { + return null; + } } } str.append_c (')');