diff --git a/lib/libesp32/Berry/src/be_jsonlib.c b/lib/libesp32/Berry/src/be_jsonlib.c index 3c7e6da5a..2ee2a4daa 100644 --- a/lib/libesp32/Berry/src/be_jsonlib.c +++ b/lib/libesp32/Berry/src/be_jsonlib.c @@ -45,8 +45,19 @@ static const char* match_char(const char *json, int ch) static int is_object(bvm *vm, const char *class, int idx) { if (be_isinstance(vm, idx)) { + be_pushvalue(vm, idx); + while (1) { + be_getsuper(vm, -1); + if (be_isnil(vm, -1)) { + be_pop(vm, 1); + break; + } + be_remove(vm, -2); + } const char *name = be_classname(vm, idx); - return !strcmp(name, class); + bbool ret = !strcmp(name, class); + be_pop(vm, 1); + return ret; } return 0; }