mirror of
https://github.com/amyinspace/MagicSetEditor2.git
synced 2026-06-10 13:06:59 -04:00
Fixed bug in dependency checker that caused it to overwrite variables outside its scope
git-svn-id: svn://svn.code.sf.net/p/magicseteditor/code/trunk@1063 0fc631ac-6414-0410-93d0-97cfa31319b6
This commit is contained in:
@@ -265,12 +265,22 @@ ScriptValueP Context::makeClosure(const ScriptValueP& fun) {
|
||||
|
||||
size_t Context::openScope() {
|
||||
level += 1;
|
||||
#ifdef _DEBUG
|
||||
scopes.push_back(shadowed.size());
|
||||
assert(scopes.size() == level);
|
||||
#endif
|
||||
return shadowed.size();
|
||||
}
|
||||
void Context::closeScope(size_t scope) {
|
||||
assert(level > 0);
|
||||
assert(scope <= shadowed.size());
|
||||
level -= 1;
|
||||
#ifdef _DEBUG
|
||||
assert(!scopes.empty());
|
||||
assert(scopes.back() == scope);
|
||||
scopes.pop_back();
|
||||
assert(scopes.size() == level);
|
||||
#endif
|
||||
// restore shadowed variables
|
||||
while (shadowed.size() > scope) {
|
||||
variables[shadowed.back().variable] = shadowed.back().value;
|
||||
|
||||
Reference in New Issue
Block a user