changeset 18281:53b4895476ee draft

(svn r23117) -Fix: [NoAI] calling require() to include a file gave you 100.000 opcodes for free
author yexo <yexo@openttd.org>
date Fri, 04 Nov 2011 23:14:23 +0000
parents 7910779b241a
children 510b749ba70b
files bin/ai/regression/regression.txt src/script/squirrel.cpp
diffstat 2 files changed, 10 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/bin/ai/regression/regression.txt
+++ b/bin/ai/regression/regression.txt
@@ -8611,9 +8611,9 @@
   GetNumWagons():       3
   GetLength():          24
   GetWagonEngineType(): 9
-  GetWagonAge():        0
+  GetWagonAge():        1
   GetWagonEngineType(): 27
-  GetWagonAge():        0
+  GetWagonAge():        1
   GetWagonEngineType(): 27
   GetWagonAge():        0
   GetWagonEngineType(): 65535
@@ -8647,11 +8647,11 @@
     14 => 1
     12 => 1
   Age ListDump:
+    17 => 1
+    16 => 1
     14 => 1
     13 => 1
     12 => 1
-    17 => 0
-    16 => 0
   MaxAge ListDump:
     16 => 10980
     14 => 10980
@@ -8659,9 +8659,9 @@
     13 => 5490
     12 => 5490
   AgeLeft ListDump:
-    16 => 10980
+    16 => 10979
     14 => 10979
-    17 => 7320
+    17 => 7319
     13 => 5489
     12 => 5489
   CurrentSpeed ListDump:
--- a/src/script/squirrel.cpp
+++ b/src/script/squirrel.cpp
@@ -481,15 +481,19 @@
 	/* Make sure we are always in the root-table */
 	if (in_root) sq_pushroottable(vm);
 
+	SQInteger ops_left = vm->_ops_till_suspend;
 	/* Load and run the script */
 	if (SQ_SUCCEEDED(LoadFile(vm, script, SQTrue))) {
 		sq_push(vm, -2);
 		if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue, 100000))) {
 			sq_pop(vm, 1);
+			/* After compiling the file we want to reset the amount of opcodes. */
+			vm->_ops_till_suspend = ops_left;
 			return true;
 		}
 	}
 
+	vm->_ops_till_suspend = ops_left;
 	DEBUG(misc, 0, "[squirrel] Failed to compile '%s'", script);
 	return false;
 }