queueExec update in-place.

Maintains load order for files that are overridden by queueExec.
This commit is contained in:
OTHGMars 2020-08-07 04:40:14 -04:00
parent 2b686bf713
commit 840ad6d385

View file

@ -222,14 +222,16 @@ function SimSet::queueExec(%scopeSet, %execFilePath, %isExclusive)
if ((!%locked && !%isExclusive)&&($reportModuleFileConflicts)) if ((!%locked && !%isExclusive)&&($reportModuleFileConflicts))
error("found" SPC %execFilePath SPC "duplicate file!"); error("found" SPC %execFilePath SPC "duplicate file!");
if (!%locked || (%locked && %isExclusive)) if (!%locked || (%locked && %isExclusive))
{ { // Replacing an existing entry, update in-place
ExecFilesList.erase(%i); ExecFilesList.setKey(%fullPath, %i);
ExecFilesList.setValue(%isExclusive, %i);
%locked = true; //Done, but don't return and bypass trace logging below
} }
break;
} }
} }
//if we're not locked, or we are exclusive, go ahead and add it to the pile //if we're not locked, go ahead and add it to the pile
//(ensures exclusives get re-added after that erasure) if (!%locked)
if (!%locked || %isExclusive)
ExecFilesList.add(%fullPath,%isExclusive); ExecFilesList.add(%fullPath,%isExclusive);
if ($traceModuleCalls) if ($traceModuleCalls)
ExecFilesList.echo(); ExecFilesList.echo();