- Fixed: ACS function pointer instructions were not updated when library tag size changed.

- Fixed: undefined sequence compiler warning.
This commit is contained in:
Braden Obrzut 2013-07-22 02:09:46 -04:00
parent a90b49dc72
commit 7723613293

View file

@ -5556,7 +5556,8 @@ int DLevelScript::RunScript ()
case PCD_PUSHFUNCTION: case PCD_PUSHFUNCTION:
{ {
int funcnum = NEXTBYTE; int funcnum = NEXTBYTE;
PushToStack(funcnum | activeBehavior->GetLibraryID()); // Not technically a string, but since we use the same tagging mechanism
PushToStack(TAGSTR(funcnum));
break; break;
} }
case PCD_CALL: case PCD_CALL:
@ -5572,7 +5573,7 @@ int DLevelScript::RunScript ()
if(pcd == PCD_CALLSTACK) if(pcd == PCD_CALLSTACK)
{ {
funcnum = STACK(1); funcnum = STACK(1);
module = FBehavior::StaticGetModule(funcnum>>16); module = FBehavior::StaticGetModule(funcnum>>LIBRARYID_SHIFT);
--sp; --sp;
funcnum &= 0xFFFF; // Clear out tag funcnum &= 0xFFFF; // Clear out tag
@ -8449,7 +8450,8 @@ scriptwait:
case PCD_SAVESTRING: case PCD_SAVESTRING:
// Saves the string // Saves the string
{ {
PushToStack(GlobalACSStrings.AddString(work, Stack, sp)); const int str = GlobalACSStrings.AddString(work, Stack, sp);
PushToStack(str);
STRINGBUILDER_FINISH(work); STRINGBUILDER_FINISH(work);
} }
break; break;