]> git.kaiwu.me - quickjs.git/commitdiff
fixed JS_PROP_AUTOINIT handling in js_closure_define_global_var() (#455)
authorFabrice Bellard <fabrice@bellard.org>
Wed, 5 Nov 2025 10:41:18 +0000 (11:41 +0100)
committerFabrice Bellard <fabrice@bellard.org>
Wed, 5 Nov 2025 10:41:18 +0000 (11:41 +0100)
quickjs.c

index bb818445e40d9d917cc6c932769636b532d7c3eb..141484808784b1c5b5665cd42fb50cc86087761c 100644 (file)
--- a/quickjs.c
+++ b/quickjs.c
@@ -16673,9 +16673,14 @@ static JSVarRef *js_closure_define_global_var(JSContext *ctx, JSClosureVar *cv,
         if (is_direct_or_indirect_eval)
             flags |= JS_PROP_CONFIGURABLE;
 
+    retry:
         prs = find_own_property(&pr, p, cv->var_name);
         if (prs) {
-            if ((prs->flags & JS_PROP_TMASK) != JS_PROP_VARREF) {
+            if (unlikely((prs->flags & JS_PROP_TMASK) == JS_PROP_AUTOINIT)) {
+                if (JS_AutoInitProperty(ctx, p, cv->var_name, pr, prs))
+                    return NULL;
+                goto retry;
+            } else if ((prs->flags & JS_PROP_TMASK) != JS_PROP_VARREF) {
                 var_ref = js_global_object_get_uninitialized_var(ctx, p, cv->var_name);
                 if (!var_ref)
                     return NULL;