AGS: Made script module index an unsigned value

From upstream bd4e65677eb0319ff746e519ee40016000a4f4f9
This commit is contained in:
Paul Gilbert 2022-04-24 11:24:40 -07:00
parent 14cffd13e7
commit 9533c0e028
8 changed files with 20 additions and 20 deletions

View File

@ -69,8 +69,8 @@ int run_claimable_event(const char *tsname, bool includeRoom, int numParams, con
}
// run script modules
for (int kk = 0; kk < _G(numScriptModules); kk++) {
toret = RunScriptFunction(_GP(moduleInst)[kk], tsname, numParams, params);
for (auto &module_inst : _GP(moduleInst)) {
toret = RunScriptFunction(module_inst, tsname, numParams, params);
if (_G(eventClaimed) == EVENT_CLAIMED) {
_G(eventClaimed) = eventClaimedOldValue;

View File

@ -393,7 +393,7 @@ void unload_game_file() {
_GP(dialogScriptsScript).reset();
for (int i = 0; i < _G(numScriptModules); ++i) {
for (size_t i = 0; i < _G(numScriptModules); ++i) {
delete _GP(moduleInstFork)[i];
delete _GP(moduleInst)[i];
_GP(scriptModules)[i].reset();

View File

@ -329,8 +329,8 @@ void AllocScriptModules() {
_GP(runDialogOptionKeyPressHandlerFunc).moduleHasFunction.resize(_G(numScriptModules), true);
_GP(runDialogOptionTextInputHandlerFunc).moduleHasFunction.resize(_G(numScriptModules), true);
_GP(runDialogOptionRepExecFunc).moduleHasFunction.resize(_G(numScriptModules), true);
for (int i = 0; i < _G(numScriptModules); ++i) {
_GP(moduleRepExecAddr)[i].Invalidate();
for (auto &val : _GP(moduleRepExecAddr)) {
val.Invalidate();
}
}

View File

@ -355,7 +355,7 @@ void DoBeforeRestore(PreservedParams &pp) {
_G(gameinstFork) = nullptr;
_G(gameinst) = nullptr;
pp.ScMdDataSize.resize(_G(numScriptModules));
for (int i = 0; i < _G(numScriptModules); ++i) {
for (size_t i = 0; i < _G(numScriptModules); ++i) {
pp.ScMdDataSize[i] = _GP(moduleInst)[i]->globaldatasize;
delete _GP(moduleInstFork)[i];
delete _GP(moduleInst)[i];
@ -467,7 +467,7 @@ HSaveError DoAfterRestore(const PreservedParams &pp, const RestoredData &r_data)
Math::Min((size_t)_G(gameinst)->globaldatasize, r_data.GlobalScript.Len));
// restore the script module data
for (int i = 0; i < _G(numScriptModules); ++i) {
for (size_t i = 0; i < _G(numScriptModules); ++i) {
if (r_data.ScriptModules[i].Data.get())
memcpy(_GP(moduleInst)[i]->globaldata, r_data.ScriptModules[i].Data.get(),
Math::Min((size_t)_GP(moduleInst)[i]->globaldatasize, r_data.ScriptModules[i].Len));

View File

@ -815,7 +815,7 @@ HSaveError WriteScriptModules(Stream *out) {
out->Write(_G(gameinst)->globaldata, data_len);
// write the script modules data segments
out->WriteInt32(_G(numScriptModules));
for (int i = 0; i < _G(numScriptModules); ++i) {
for (size_t i = 0; i < _G(numScriptModules); ++i) {
data_len = _GP(moduleInst)[i]->globaldatasize;
out->WriteInt32(data_len);
if (data_len > 0)
@ -837,7 +837,7 @@ HSaveError ReadScriptModules(Stream *in, int32_t cmp_ver, const PreservedParams
if (!AssertGameContent(err, in->ReadInt32(), _G(numScriptModules), "Script Modules"))
return err;
r_data.ScriptModules.resize(_G(numScriptModules));
for (int i = 0; i < _G(numScriptModules); ++i) {
for (size_t i = 0; i < _G(numScriptModules); ++i) {
data_len = in->ReadInt32();
if (!AssertGameObjectContent(err, data_len, pp.ScMdDataSize[i], "script module data", "module", i))
return err;

View File

@ -100,7 +100,7 @@ static HSaveError restore_game_scripts(Stream *in, const PreservedParams &pp, Re
return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching number of script modules.");
}
r_data.ScriptModules.resize(_G(numScriptModules));
for (int i = 0; i < _G(numScriptModules); ++i) {
for (size_t i = 0; i < _G(numScriptModules); ++i) {
int module_size = in->ReadInt32();
if (pp.ScMdDataSize[i] != module_size) {
return new SavegameError(kSvgErr_GameContentAssertion, String::FromFormat("Mismatching size of script module data, module %d.", i));

View File

@ -90,8 +90,8 @@ void run_function_on_non_blocking_thread(NonBlockingScriptFunction *funcToRun) {
// run modules
// modules need a forkedinst for this to work
for (int kk = 0; kk < _G(numScriptModules); kk++) {
funcToRun->moduleHasFunction[kk] = DoRunScriptFuncCantBlock(_GP(moduleInstFork)[kk], funcToRun, funcToRun->moduleHasFunction[kk]);
for (size_t i = 0; i < _G(numScriptModules); ++i) {
funcToRun->moduleHasFunction[i] = DoRunScriptFuncCantBlock(_GP(moduleInstFork)[i], funcToRun, funcToRun->moduleHasFunction[i]);
if (room_changes_was != _GP(play).room_changes)
return;
@ -205,11 +205,11 @@ int create_global_script() {
ccSetOption(SCOPT_AUTOIMPORT, 1);
std::vector<ccInstance *> instances_for_resolving;
for (int kk = 0; kk < _G(numScriptModules); kk++) {
_GP(moduleInst)[kk] = ccInstance::CreateFromScript(_GP(scriptModules)[kk]);
if (_GP(moduleInst)[kk] == nullptr)
for (size_t i = 0; i < _G(numScriptModules); ++i) {
_GP(moduleInst)[i] = ccInstance::CreateFromScript(_GP(scriptModules)[i]);
if (_GP(moduleInst)[i] == nullptr)
return kscript_create_error;
instances_for_resolving.push_back(_GP(moduleInst)[kk]);
instances_for_resolving.push_back(_GP(moduleInst)[i]);
}
_G(gameinst) = ccInstance::CreateFromScript(_GP(gamescript));
@ -235,7 +235,7 @@ int create_global_script() {
// Create the forks for 'repeatedly_execute_always' after resolving
// because they copy their respective originals including the resolve information
for (int module_idx = 0; module_idx < _G(numScriptModules); module_idx++) {
for (size_t module_idx = 0; module_idx < _G(numScriptModules); module_idx++) {
_GP(moduleInstFork)[module_idx] = _GP(moduleInst)[module_idx]->Fork();
if (_GP(moduleInstFork)[module_idx] == nullptr)
return kscript_create_error;
@ -395,7 +395,7 @@ int RunScriptFunction(ccInstance *sci, const char *tsname, size_t numParam, cons
}
void RunScriptFunctionInModules(const char *tsname, size_t param_count, const RuntimeScriptValue *params) {
for (int i = 0; i < _G(numScriptModules); ++i)
for (size_t i = 0; i < _G(numScriptModules); ++i)
RunScriptFunction(_GP(moduleInst)[i], tsname, param_count, params);
RunScriptFunction(_G(gameinst), tsname, param_count, params);
}
@ -417,7 +417,7 @@ int RunScriptFunctionInRoom(const char *tsname, size_t param_count, const Runtim
static int RunUnclaimableEvent(const char *tsname) {
const int room_changes_was = _GP(play).room_changes;
const int restore_game_count_was = _G(gameHasBeenRestored);
for (int i = 0; i < _G(numScriptModules); ++i) {
for (size_t i = 0; i < _G(numScriptModules); ++i) {
if (!_GP(moduleRepExecAddr)[i].IsNull())
RunScriptFunction(_GP(moduleInst)[i], tsname);
// Break on room change or save restoration

View File

@ -1271,7 +1271,7 @@ public:
std::vector<ccInstance *> *_moduleInst;
std::vector<ccInstance *> *_moduleInstFork;
std::vector<RuntimeScriptValue> *_moduleRepExecAddr;
int _numScriptModules = 0;
size_t _numScriptModules = 0;
// TODO: find out if these extra arrays are really necessary. This may be remains from the
// time when the symbol import table was holding raw pointers to char array.