Skip to content

Commit

Permalink
Fix global variable restoration
Browse files Browse the repository at this point in the history
  • Loading branch information
hanna-kn committed Aug 9, 2017
1 parent b135608 commit bc0971f
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
8 changes: 4 additions & 4 deletions libqalculate/Calculator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3423,17 +3423,17 @@ void Calculator::expressionItemDeleted(ExpressionItem *item) {
break;
}
}
for(size_t i = 1; i <= item->countNames(); i++) {
for(size_t i2 = 1; i2 <= item->countNames(); i2++) {
if(item->type() == TYPE_VARIABLE || item->type() == TYPE_UNIT) {
for(size_t i = 0; i < variables.size(); i++) {
if(!variables[i]->isLocal() && !variables[i]->isActive() && variables[i]->hasName(item->getName(i).name, item->getName(i).case_sensitive) && !getActiveExpressionItem(variables[i])) variables[i]->setActive(true);
if(!variables[i]->isLocal() && !variables[i]->isActive() && variables[i]->hasName(item->getName(i2).name, item->getName(i2).case_sensitive) && !getActiveExpressionItem(variables[i])) {variables[i]->setActive(true);}
}
for(size_t i = 0; i < units.size(); i++) {
if(!units[i]->isLocal() && !units[i]->isActive() && units[i]->hasName(item->getName(i).name, item->getName(i).case_sensitive) && !getActiveExpressionItem(units[i])) units[i]->setActive(true);
if(!units[i]->isLocal() && !units[i]->isActive() && units[i]->hasName(item->getName(i2).name, item->getName(i2).case_sensitive) && !getActiveExpressionItem(units[i])) units[i]->setActive(true);
}
} else {
for(size_t i = 0; i < functions.size(); i++) {
if(!functions[i]->isLocal() && !functions[i]->isActive() && functions[i]->hasName(item->getName(i).name, item->getName(i).case_sensitive) && !getActiveExpressionItem(functions[i])) functions[i]->setActive(true);
if(!functions[i]->isLocal() && !functions[i]->isActive() && functions[i]->hasName(item->getName(i2).name, item->getName(i2).case_sensitive) && !getActiveExpressionItem(functions[i])) functions[i]->setActive(true);
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions libqalculate/ExpressionItem.cc
Original file line number Diff line number Diff line change
Expand Up @@ -359,16 +359,16 @@ bool ExpressionItem::setLocal(bool is_local, int will_be_active) {
if(is_local != b_local) {
if(!b_local) {
bool was_active = b_active;
b_active = false;
b_active = false;
ExpressionItem *item = copy();
b_local = is_local;
b_local = is_local;
b_active = was_active;
if(will_be_active) {
setActive(true);
} else if(will_be_active == 0) {
setActive(false);
}
CALCULATOR->addExpressionItem(item);
CALCULATOR->addExpressionItem(item);
if(was_active != item->isActive()) {
item->setChanged(true);
}
Expand Down

0 comments on commit bc0971f

Please sign in to comment.