diff --git a/lib/libesp32/berry/src/be_vm.c b/lib/libesp32/berry/src/be_vm.c index 7d2c72350..4555fc9b1 100644 --- a/lib/libesp32/berry/src/be_vm.c +++ b/lib/libesp32/berry/src/be_vm.c @@ -114,7 +114,13 @@ if (var_isint(a) && var_isint(b)) { \ res = ibinop(op, a, b); \ } else if (var_isnumber(a) && var_isnumber(b)) { \ - res = var2real(a) op var2real(b); \ + /* res = var2real(a) op var2real(b); */ \ + union bvaldata x, y; /* TASMOTA workaround for ESP32 rev0 bug */ \ + x.i = a->v.i;\ + if (var_isint(a)) { x.r = (breal) x.i; }\ + y.i = b->v.i;\ + if (var_isint(b)) { y.r = (breal) y.i; }\ + res = x.r op y.r; \ } else if (var_isstr(a) && var_isstr(b)) { \ bstring *s1 = var_tostr(a), *s2 = var_tostr(b); \ res = be_strcmp(s1, s2) op 0; \