From be9e795b66ed96e232abcd3ca628096c9a51c61c Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sun, 19 Nov 2017 15:29:55 +0100 Subject: [PATCH] codegen: Enforce name-length >= 3 for structs using GType https://bugzilla.gnome.org/show_bug.cgi?id=764041 --- codegen/valaccodestructmodule.vala | 6 ++++++ tests/Makefile.am | 1 + tests/structs/bug764041.test | 10 ++++++++++ 3 files changed, 17 insertions(+) create mode 100644 tests/structs/bug764041.test diff --git a/codegen/valaccodestructmodule.vala b/codegen/valaccodestructmodule.vala index 9774570cd..654894812 100644 --- a/codegen/valaccodestructmodule.vala +++ b/codegen/valaccodestructmodule.vala @@ -158,6 +158,12 @@ public abstract class Vala.CCodeStructModule : CCodeBaseModule { push_context (new EmitContext (st)); push_line (st.source_reference); + if (get_ccode_has_type_id (st) && get_ccode_name (st).length < 3) { + st.error = true; + Report.error (st.source_reference, "Name `%s' is too short for struct using GType".printf (get_ccode_name (st))); + return; + } + var old_instance_finalize_context = instance_finalize_context; instance_finalize_context = new EmitContext (); diff --git a/tests/Makefile.am b/tests/Makefile.am index d8b7c8ff3..682f33d16 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -154,6 +154,7 @@ TESTS = \ structs/bug690380.vala \ structs/bug694140.vala \ structs/bug749952.vala \ + structs/bug764041.test \ structs/bug775761.vala \ structs/bug777194.vala \ delegates/casting.vala \ diff --git a/tests/structs/bug764041.test b/tests/structs/bug764041.test new file mode 100644 index 000000000..1911cda0c --- /dev/null +++ b/tests/structs/bug764041.test @@ -0,0 +1,10 @@ +Invalid Code + +struct N { + public int i; +} + +void main() { + N n = { 42 }; + Value v = n; +} -- 2.11.4.GIT