- Boolean *parent = oldb->parents.get(i);
- BooleanLogic *logicop = (BooleanLogic *) parent;
- boolMap.remove(parent); //could change parent's hash
-
- uint parentsize = logicop->inputs.getSize();
- for (uint j = 0; j < parentsize; j++) {
- BooleanEdge b = logicop->inputs.get(j);
- if (b == oldb) {
- logicop->inputs.set(j, newb);
- newb->parents.push(parent);
- } else if (b == oldbnegated) {
- logicop->inputs.set(j, newb.negate());
- newb->parents.push(parent);
+ ASTNode *parent = oldb->parents.get(i);
+ if (parent->type == ELEMFUNCRETURN) {
+ ElementFunction *ef = (ElementFunction *) parent;
+ elemMap.remove(ef);
+ if (ef->overflowstatus == oldb) {
+ ef->overflowstatus = newb;
+ newb->parents.push(ef);
+ } else if (ef->overflowstatus == oldbnegated) {
+ ef->overflowstatus = newb.negate();
+ newb->parents.push(ef);
+ }
+ elemMap.put(ef, ef);
+ } else {
+ BooleanLogic *logicop = (BooleanLogic *) parent;
+ boolMap.remove(logicop); //could change parent's hash
+
+ uint parentsize = logicop->inputs.getSize();
+ for (uint j = 0; j < parentsize; j++) {
+ BooleanEdge b = logicop->inputs.get(j);
+ if (b == oldb) {
+ logicop->inputs.set(j, newb);
+ newb->parents.push(logicop);
+ } else if (b == oldbnegated) {
+ logicop->inputs.set(j, newb.negate());
+ newb->parents.push(logicop);
+ }