diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2017-11-19 15:29:55 +0100 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2017-12-09 14:29:36 +0100 |
commit | f2208a804ceee5b221c4ba20e0c30d9b2878a5c6 (patch) | |
tree | 9a3080a4853a85fb1be972cdb4f9d5a3bfd147f2 | |
parent | 15b906bd1584f3bb8e3bfc76083e5b0f7708cc7e (diff) | |
download | vala-f2208a804ceee5b221c4ba20e0c30d9b2878a5c6.tar.gz |
codegen: Enforce name-length >= 3 for structs using GType
https://bugzilla.gnome.org/show_bug.cgi?id=764041
-rw-r--r-- | codegen/valaccodestructmodule.vala | 6 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/structs/bug764041.test | 10 |
3 files changed, 17 insertions, 0 deletions
diff --git a/codegen/valaccodestructmodule.vala b/codegen/valaccodestructmodule.vala index eb52d472e..a68ffd39c 100644 --- a/codegen/valaccodestructmodule.vala +++ b/codegen/valaccodestructmodule.vala @@ -168,6 +168,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 d27c5949c..f85348115 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -129,6 +129,7 @@ TESTS = \ structs/bug690380.vala \ structs/bug694140.vala \ structs/bug749952.vala \ + structs/bug764041.test \ structs/bug775761.vala \ delegates/casting.vala \ delegates/delegates.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; +} |