Skip to content

Commit 03da10e

Browse files
authored
Merge pull request #183 from Joe7M/master
Fix EQV bug. "0 EQV 0" will return correct result "1"
2 parents f428077 + caa1e00 commit 03da10e

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-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: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,12 @@ static inline void oper_log(var_t *r, var_t *left) {
531531
b = ri;
532532
ri = 0;
533533
set = 0;
534+
535+
if ((a == 0) & (b == 0)) {
536+
ri = 1;
537+
break;
538+
}
539+
534540
for (i = (sizeof(var_int_t) * 8) - 1; i >= 0; i--) {
535541
int ba = ((a >> i) & 1);
536542
int bb = ((b >> i) & 1);
@@ -547,6 +553,12 @@ static inline void oper_log(var_t *r, var_t *left) {
547553
b = ri;
548554
ri = 0;
549555
set = 0;
556+
557+
if ((a == 0) & (b == 0)) {
558+
ri = 1;
559+
break;
560+
}
561+
550562
for (i = (sizeof(var_int_t) * 8) - 1; i >= 0; i--) {
551563
int ba = ((a >> i) & 1);
552564
int bb = ((b >> i) & 1);

0 commit comments

Comments
 (0)