From c419b548d2402cbbc863cc4bb08cf178b2a96c0d Mon Sep 17 00:00:00 2001 From: Hilderin <81109165+Hilderin@users.noreply.github.com> Date: Fri, 14 Jun 2024 11:18:52 -0400 Subject: [PATCH] Fix mismatched external parser with binary exports --- modules/gdscript/gdscript.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp index 0c58b41fcbfe..838ab42bebc9 100644 --- a/modules/gdscript/gdscript.cpp +++ b/modules/gdscript/gdscript.cpp @@ -771,8 +771,16 @@ Error GDScript::reload(bool p_keep_state) { if (GDScriptCache::has_parser(source_path)) { Error err = OK; Ref parser_ref = GDScriptCache::get_parser(source_path, GDScriptParserRef::EMPTY, err); - if (parser_ref.is_valid() && parser_ref->get_source_hash() != source.hash()) { - GDScriptCache::remove_parser(source_path); + if (parser_ref.is_valid()) { + uint32_t source_hash; + if (!binary_tokens.is_empty()) { + source_hash = hash_djb2_buffer(binary_tokens.ptr(), binary_tokens.size()); + } else { + source_hash = source.hash(); + } + if (parser_ref->get_source_hash() != source_hash) { + GDScriptCache::remove_parser(source_path); + } } } }