From 109e54164212b2d6342a8bfe145eec2c7b78a9a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Mon, 13 Nov 2023 10:06:24 +0100 Subject: [PATCH] Add Symbol key support to WeakMap --- quickjs.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/quickjs.c b/quickjs.c index 0f41cef3..7e1ec979 100644 --- a/quickjs.c +++ b/quickjs.c @@ -43650,8 +43650,14 @@ static JSValue js_map_set(JSContext *ctx, JSValueConst this_val, if (!s) return JS_EXCEPTION; key = map_normalize_key(ctx, argv[0]); - if (s->is_weak && !JS_IsObject(key)) - return JS_ThrowTypeErrorNotAnObject(ctx); + if (s->is_weak) { + if (magic & MAGIC_SET) { + if (!JS_IsObject(key)) + return JS_ThrowTypeErrorNotAnObject(ctx); + } else if (!JS_IsObject(key) && !JS_IsSymbol(key)) { + return JS_ThrowTypeError(ctx, "key must be Objecty or Symbol"); + } + } if (magic & MAGIC_SET) value = JS_UNDEFINED; else