From 41b113840a983e2e9b107a452f800eb94c662b23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Guilloux?= Date: Thu, 1 May 2025 18:16:32 +0200 Subject: [PATCH] Fix: [Script] Access to enum/consts defined outside of main.nut (#14176) --- regression/regression/main.nut | 4 ++++ regression/regression/require.nut | 7 +++++++ regression/regression/result.txt | 12 ++++++++---- src/3rdparty/squirrel/squirrel/sqvm.cpp | 3 ++- 4 files changed, 21 insertions(+), 5 deletions(-) diff --git a/regression/regression/main.nut b/regression/regression/main.nut index c0fe80ea4b..c349c9b9ba 100644 --- a/regression/regression/main.nut +++ b/regression/regression/main.nut @@ -17,6 +17,10 @@ function Regression::TestInit() print(" IsValid(vehicle.plane_speed): " + AIGameSettings.IsValid("vehicle.plane_speed")); print(" vehicle.plane_speed: " + AIGameSettings.GetValue("vehicle.plane_speed")); require("require.nut"); + print(" TestEnum.value1: " + ::TestEnum.value1); + print(" test_constant: " + ::test_constant); + print(" TestEnum.value2: " + TestEnum.value2); + print(" test_constant: " + test_constant); print(" min(6, 3): " + min(6, 3)); print(" min(3, 6): " + min(3, 6)); print(" max(6, 3): " + max(6, 3)); diff --git a/regression/regression/require.nut b/regression/regression/require.nut index d8dc4baa7d..872a929a5f 100644 --- a/regression/regression/require.nut +++ b/regression/regression/require.nut @@ -1,2 +1,9 @@ print(" Required this file"); +const test_constant = 1; + +enum TestEnum { + value0, + value1, + value2 +}; diff --git a/regression/regression/result.txt b/regression/regression/result.txt index f00c9e3813..28a22d4e78 100644 --- a/regression/regression/result.txt +++ b/regression/regression/result.txt @@ -8,6 +8,10 @@ IsValid(vehicle.plane_speed): true vehicle.plane_speed: 2 Required this file + TestEnum.value1: 1 + test_constant: 1 + TestEnum.value2: 2 + test_constant: 1 min(6, 3): 3 min(3, 6): 3 max(6, 3): 6 @@ -81,7 +85,7 @@ 20 30 40 - Ops: 8673 + Ops: 8649 --Std-- abs(-21): 21 @@ -9763,9 +9767,9 @@ ERROR: IsEnd() is invalid as Begin() is never called --Valuate() with excessive CPU usage-- Your script made an error: excessive CPU usage in valuator function -*FUNCTION [unknown()] regression/main.nut line [2065] +*FUNCTION [unknown()] regression/main.nut line [2069] *FUNCTION [Valuate()] NATIVE line [-1] -*FUNCTION [Start()] regression/main.nut line [2066] +*FUNCTION [Start()] regression/main.nut line [2070] [id] 0 [this] TABLE @@ -9774,7 +9778,7 @@ Your script made an error: excessive CPU usage in valuator function [this] INSTANCE Your script made an error: excessive CPU usage in valuator function -*FUNCTION [Start()] regression/main.nut line [2066] +*FUNCTION [Start()] regression/main.nut line [2070] [Infinite] CLOSURE [list] INSTANCE diff --git a/src/3rdparty/squirrel/squirrel/sqvm.cpp b/src/3rdparty/squirrel/squirrel/sqvm.cpp index bb50dc2244..4055c1fc8c 100644 --- a/src/3rdparty/squirrel/squirrel/sqvm.cpp +++ b/src/3rdparty/squirrel/squirrel/sqvm.cpp @@ -1253,7 +1253,8 @@ bool SQVM::Get(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr &dest, if(fetchroot) { if(_rawval(STK(0)) == _rawval(self) && type(STK(0)) == type(self)) { - return _table(_roottable)->Get(key,dest); + if (_table(_roottable)->Get(key,dest)) return true; + return _table(_ss(this)->_consts)->Get(key,dest); } } return false;