(svn r23117) -Fix: [NoAI] calling require() to include a file gave you 100.000 opcodes for free

This commit is contained in:
yexo 2011-11-04 23:14:23 +00:00
parent 3e016e4254
commit 02913f40b0
2 changed files with 10 additions and 6 deletions

View File

@ -8611,9 +8611,9 @@ ERROR: IsEnd() is invalid as Begin() is never called
GetNumWagons(): 3 GetNumWagons(): 3
GetLength(): 24 GetLength(): 24
GetWagonEngineType(): 9 GetWagonEngineType(): 9
GetWagonAge(): 0 GetWagonAge(): 1
GetWagonEngineType(): 27 GetWagonEngineType(): 27
GetWagonAge(): 0 GetWagonAge(): 1
GetWagonEngineType(): 27 GetWagonEngineType(): 27
GetWagonAge(): 0 GetWagonAge(): 0
GetWagonEngineType(): 65535 GetWagonEngineType(): 65535
@ -8647,11 +8647,11 @@ ERROR: IsEnd() is invalid as Begin() is never called
14 => 1 14 => 1
12 => 1 12 => 1
Age ListDump: Age ListDump:
17 => 1
16 => 1
14 => 1 14 => 1
13 => 1 13 => 1
12 => 1 12 => 1
17 => 0
16 => 0
MaxAge ListDump: MaxAge ListDump:
16 => 10980 16 => 10980
14 => 10980 14 => 10980
@ -8659,9 +8659,9 @@ ERROR: IsEnd() is invalid as Begin() is never called
13 => 5490 13 => 5490
12 => 5490 12 => 5490
AgeLeft ListDump: AgeLeft ListDump:
16 => 10980 16 => 10979
14 => 10979 14 => 10979
17 => 7320 17 => 7319
13 => 5489 13 => 5489
12 => 5489 12 => 5489
CurrentSpeed ListDump: CurrentSpeed ListDump:

View File

@ -481,15 +481,19 @@ static SQInteger _io_file_read(SQUserPointer file, SQUserPointer buf, SQInteger
/* Make sure we are always in the root-table */ /* Make sure we are always in the root-table */
if (in_root) sq_pushroottable(vm); if (in_root) sq_pushroottable(vm);
SQInteger ops_left = vm->_ops_till_suspend;
/* Load and run the script */ /* Load and run the script */
if (SQ_SUCCEEDED(LoadFile(vm, script, SQTrue))) { if (SQ_SUCCEEDED(LoadFile(vm, script, SQTrue))) {
sq_push(vm, -2); sq_push(vm, -2);
if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue, 100000))) { if (SQ_SUCCEEDED(sq_call(vm, 1, SQFalse, SQTrue, 100000))) {
sq_pop(vm, 1); sq_pop(vm, 1);
/* After compiling the file we want to reset the amount of opcodes. */
vm->_ops_till_suspend = ops_left;
return true; return true;
} }
} }
vm->_ops_till_suspend = ops_left;
DEBUG(misc, 0, "[squirrel] Failed to compile '%s'", script); DEBUG(misc, 0, "[squirrel] Failed to compile '%s'", script);
return false; return false;
} }