Skip to content

Commit caa1e00

Browse files
committed
Fix: "0 IMP 0" returns now correct result 1
1 parent 457818c commit caa1e00

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

samples/distro-examples/tests/eval-test.bas

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,10 @@ assertEq 0xcccccccc Imp 0xaaaaaaaa, 0xbbbbbbbb, PROGLINE
193193
assertEq 0xcccc Imp 0xaaaa, 0xbbbb, PROGLINE
194194
assertEq 0xcc Imp 0xaa, 0xbb, PROGLINE
195195
assertEq 0xc Imp 0xa, 0xb, PROGLINE
196+
assertEq 0 Imp 0, 1, PROGLINE
197+
assertEq 0 Imp 1, 1, PROGLINE
198+
assertEq 1 Imp 0, 0, PROGLINE
199+
assertEq 1 Imp 1, 1, PROGLINE
196200

197201
' The Eqv operator returns 1 if and only if both inputs are equal.
198202
' 1100
@@ -203,6 +207,10 @@ assertEq 0xcccccccc Eqv 0xaaaaaaaa, 0x99999999, PROGLINE
203207
assertEq 0xcccc Eqv 0xaaaa, 0x9999, PROGLINE
204208
assertEq 0xcc Eqv 0xaa, 0x99, PROGLINE
205209
assertEq 0xc Eqv 0xa, 0x9, PROGLINE
210+
assertEQ 0 EQV 0, 1, PROGLINE
211+
assertEQ 0 EQV 1, 0, PROGLINE
212+
assertEQ 1 EQV 0, 0, PROGLINE
213+
assertEQ 1 EQV 1, 1, PROGLINE
206214

207215
' bit shift operators
208216
assertEq 0xFF LSHIFT 1, 0x1FE, PROGLINE

src/common/eval.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,12 @@ static inline void oper_log(var_t *r, var_t *left) {
553553
b = ri;
554554
ri = 0;
555555
set = 0;
556+
557+
if ((a == 0) & (b == 0)) {
558+
ri = 1;
559+
break;
560+
}
561+
556562
for (i = (sizeof(var_int_t) * 8) - 1; i >= 0; i--) {
557563
int ba = ((a >> i) & 1);
558564
int bb = ((b >> i) & 1);

0 commit comments

Comments
 (0)