File tree 1 file changed +9
-9
lines changed 1 file changed +9
-9
lines changed Original file line number Diff line number Diff line change @@ -519,20 +519,20 @@ void interpretert::evaluate(
519
519
if (expr.operands ().size ()!=3 )
520
520
throw " if expects three operands" ;
521
521
522
- std::vector<mp_integer> tmp0, tmp1, tmp2 ;
522
+ std::vector<mp_integer> tmp0, tmp1;
523
523
evaluate (expr.op0 (), tmp0);
524
- evaluate (expr.op1 (), tmp1);
525
- evaluate (expr.op2 (), tmp2);
526
524
527
- if (tmp0.size ()==1 && tmp1. size ()== 1 && tmp2. size ()== 1 )
525
+ if (tmp0.size ()==1 )
528
526
{
529
- const mp_integer &op0=tmp0.front ();
530
- const mp_integer &op1=tmp1.front ();
531
- const mp_integer &op2=tmp2.front ();
532
-
533
- dest.push_back (op0!=0 ?op1:op2);
527
+ if (tmp0.front ()!=0 )
528
+ evaluate (expr.op1 (), tmp1);
529
+ else
530
+ evaluate (expr.op2 (), tmp1);
534
531
}
535
532
533
+ if (tmp1.size ()==1 )
534
+ dest.push_back (tmp1.front ());
535
+
536
536
return ;
537
537
}
538
538
else if (expr.id ()==ID_and)
You can’t perform that action at this time.
0 commit comments