diff options
author | bptato <nincsnevem662@gmail.com> | 2024-04-21 19:17:10 +0200 |
---|---|---|
committer | bptato <nincsnevem662@gmail.com> | 2024-04-21 19:17:10 +0200 |
commit | 470aeef2d72614cb8f904d8ef19583312410d981 (patch) | |
tree | 20cebeb73b89000d4ee43b1d95c98d271ae84483 /src/js | |
parent | 31b359224632fd4e3c2aac667483ed249121efaa (diff) | |
download | chawan-470aeef2d72614cb8f904d8ef19583312410d981.tar.gz |
js: fix some incorrect defineProperty usage
It consumes a value, so we must dup those that we pass.
Diffstat (limited to 'src/js')
-rw-r--r-- | src/js/module.nim | 4 | ||||
-rw-r--r-- | src/js/tojs.nim | 1 |
2 files changed, 2 insertions, 3 deletions
diff --git a/src/js/module.nim b/src/js/module.nim index 2e15ead3..636065b8 100644 --- a/src/js/module.nim +++ b/src/js/module.nim @@ -6,13 +6,11 @@ import js/tojs proc setImportMeta(ctx: JSContext; funcVal: JSValue; isMain: bool) = let m = cast[JSModuleDef](JS_VALUE_GET_PTR(funcVal)) let moduleNameAtom = JS_GetModuleName(ctx, m) - let moduleName = JS_AtomToCString(ctx, moduleNameAtom) let metaObj = JS_GetImportMeta(ctx, m) - definePropertyCWE(ctx, metaObj, "url", moduleName) + definePropertyCWE(ctx, metaObj, "url", JS_AtomToValue(ctx, moduleNameAtom)) definePropertyCWE(ctx, metaObj, "main", isMain) JS_FreeValue(ctx, metaObj) JS_FreeAtom(ctx, moduleNameAtom) - JS_FreeCString(ctx, moduleName) proc finishLoadModule*(ctx: JSContext; f: string; name: cstring): JSModuleDef = let funcVal = compileModule(ctx, f, name) diff --git a/src/js/tojs.nim b/src/js/tojs.nim index 4cbd2045..2ee8fd47 100644 --- a/src/js/tojs.nim +++ b/src/js/tojs.nim @@ -106,6 +106,7 @@ makeToJSP(Result) makeToJSP(JSValue) makeToJSP(JSDict) +# Note: this consumes `prop'. proc defineProperty(ctx: JSContext; this: JSValue; name: JSAtom; prop: JSValue; flags = cint(0)) = if JS_DefinePropertyValue(ctx, this, name, prop, flags) <= 0: |