From 2a620cd285f7c76117e5678c94f1b405a393db50 Mon Sep 17 00:00:00 2001 From: Stephan Hadinger Date: Wed, 29 Jun 2022 10:16:01 +0200 Subject: [PATCH] Berry fix crash on ESP32 early revisions --- lib/libesp32/berry/src/be_vm.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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; \