From 470aeef2d72614cb8f904d8ef19583312410d981 Mon Sep 17 00:00:00 2001 From: bptato Date: Sun, 21 Apr 2024 19:17:10 +0200 Subject: js: fix some incorrect defineProperty usage It consumes a value, so we must dup those that we pass. --- src/html/dom.nim | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/html') diff --git a/src/html/dom.nim b/src/html/dom.nim index 417237bb..8767ac6e 100644 --- a/src/html/dom.nim +++ b/src/html/dom.nim @@ -1446,7 +1446,7 @@ proc newLocation*(window: Window): Location = if ctx != nil: let val = toJS(ctx, location) let valueOf = ctx.getOpaque().Object_prototype_valueOf - defineProperty(ctx, val, "valueOf", valueOf) + defineProperty(ctx, val, "valueOf", JS_DupValue(ctx, valueOf)) defineProperty(ctx, val, "toPrimitive", JS_UNDEFINED) #TODO [[DefaultProperties]] JS_FreeValue(ctx, val) @@ -2855,7 +2855,7 @@ proc reflectEvent(element: Element; target: EventTarget; name: StaticAtom; urls, ctx.getExceptionMsg()) else: let jsTarget = ctx.toJS(target) - ctx.definePropertyC(jsTarget, $name, fun) + ctx.definePropertyC(jsTarget, $name, JS_DupValue(ctx, fun)) JS_FreeValue(ctx, jsTarget) #TODO this is subtly wrong. In fact, we should not pass `fun' # directly here, but a wrapper function that calls fun. Currently -- cgit 1.4.1-2-gfad0