From e03b7b1935954bb075d8d975a9b7a3a73c7cfa84 Mon Sep 17 00:00:00 2001 From: Antonio Dell'Annunziata Date: Thu, 28 Jul 2022 18:52:15 +0200 Subject: [PATCH] fix(gdscript): Fix out of bounds crash after reloading member variables The crash happens because the members Vector is resized, while the member_indices_cache still has the old indices saved. On deleting a member from the script this can result to a cached index of 1 while the members Vector size is only 1. --- modules/gdscript/gdscript.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/gdscript/gdscript.cpp b/modules/gdscript/gdscript.cpp index a34bf6ef821..fcd846bc6fc 100644 --- a/modules/gdscript/gdscript.cpp +++ b/modules/gdscript/gdscript.cpp @@ -1636,8 +1636,6 @@ const Vector GDScriptInstance::get_rpc_methods() const { void GDScriptInstance::reload_members() { #ifdef DEBUG_ENABLED - members.resize(script->member_indices.size()); //resize - Vector new_members; new_members.resize(script->member_indices.size()); @@ -1649,6 +1647,8 @@ void GDScriptInstance::reload_members() { } } + members.resize(new_members.size()); //resize + //apply members = new_members;