From e26a2cdac92e91311294e88c650a6ef92179e7e2 Mon Sep 17 00:00:00 2001 From: s-hadinger <49731213+s-hadinger@users.noreply.github.com> Date: Thu, 6 Mar 2025 14:45:34 +0100 Subject: [PATCH] Berry prevent 'import' from hiding a solidified class (#23112) --- CHANGELOG.md | 1 + lib/libesp32/berry/src/be_parser.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a93a8346..9165bc6ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ All notable changes to this project will be documented in this file. - ESP32 enable webcam version 2 (#18732) ### Fixed +- Berry prevent `import` from hiding a solidified class ### Removed diff --git a/lib/libesp32/berry/src/be_parser.c b/lib/libesp32/berry/src/be_parser.c index 9737cdf81..4fc03b793 100644 --- a/lib/libesp32/berry/src/be_parser.c +++ b/lib/libesp32/berry/src/be_parser.c @@ -488,7 +488,10 @@ static void new_var(bparser *parser, bstring *name, bexpdesc *var) var->v.idx = new_localvar(parser, name); /* if local, contains the index in current local var list */ } else { init_exp(var, ETGLOBAL, 0); - var->v.idx = be_global_new(parser->vm, name); + var->v.idx = be_global_find(parser->vm, name); + if (var->v.idx < 0) { + var->v.idx = be_global_new(parser->vm, name); + } if (var->v.idx > (int)IBx_MASK) { push_error(parser, "too many global variables (in '%s')", str(name));