From c7452a9940d98351d235aa7c559ea54ec82b5c74 Mon Sep 17 00:00:00 2001 From: kobewi Date: Tue, 24 Aug 2021 13:19:40 +0200 Subject: [PATCH] Fix crash with consecutive commas in Dictionary --- modules/gdscript/gdscript_parser.cpp | 6 ++++-- .../tests/scripts/parser/errors/double_dictionary_comma.gd | 2 ++ .../tests/scripts/parser/errors/double_dictionary_comma.out | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 modules/gdscript/tests/scripts/parser/errors/double_dictionary_comma.gd create mode 100644 modules/gdscript/tests/scripts/parser/errors/double_dictionary_comma.out diff --git a/modules/gdscript/gdscript_parser.cpp b/modules/gdscript/gdscript_parser.cpp index 4f275ca240f..25083a1f0a0 100644 --- a/modules/gdscript/gdscript_parser.cpp +++ b/modules/gdscript/gdscript_parser.cpp @@ -2462,8 +2462,10 @@ GDScriptParser::ExpressionNode *GDScriptParser::parse_dictionary(ExpressionNode push_error(R"(Expected "=" after dictionary key.)"); } } - key->is_constant = true; - key->reduced_value = static_cast(key)->name; + if (key != nullptr) { + key->is_constant = true; + key->reduced_value = static_cast(key)->name; + } break; case DictionaryNode::PYTHON_DICT: if (!match(GDScriptTokenizer::Token::COLON)) { diff --git a/modules/gdscript/tests/scripts/parser/errors/double_dictionary_comma.gd b/modules/gdscript/tests/scripts/parser/errors/double_dictionary_comma.gd new file mode 100644 index 00000000000..92dfb2366d2 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/double_dictionary_comma.gd @@ -0,0 +1,2 @@ +func test(): + var dictionary = { hello = "world",, } diff --git a/modules/gdscript/tests/scripts/parser/errors/double_dictionary_comma.out b/modules/gdscript/tests/scripts/parser/errors/double_dictionary_comma.out new file mode 100644 index 00000000000..d1dcd1cb4b0 --- /dev/null +++ b/modules/gdscript/tests/scripts/parser/errors/double_dictionary_comma.out @@ -0,0 +1,2 @@ +GDTEST_PARSER_ERROR +Expected expression as dictionary key.