about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorbptato <nincsnevem662@gmail.com>2022-12-20 19:50:41 +0100
committerbptato <nincsnevem662@gmail.com>2022-12-20 19:50:41 +0100
commit18350159ad39c25d8acf6d9abdc4084592d58a21 (patch)
tree7fff0c63ff7d81581954cb69d9553a7ad7006b4a
parentd8ff191ee73753e75abcaac92fa3128413da4251 (diff)
downloadchawan-18350159ad39c25d8acf6d9abdc4084592d58a21.tar.gz
Fix JS_GetPropertyNames bindings
-rw-r--r--src/bindings/quickjs.nim2
-rw-r--r--src/js/javascript.nim4
2 files changed, 4 insertions, 2 deletions
diff --git a/src/bindings/quickjs.nim b/src/bindings/quickjs.nim
index 34f24cec..cfef9693 100644
--- a/src/bindings/quickjs.nim
+++ b/src/bindings/quickjs.nim
@@ -352,7 +352,7 @@ proc JS_SetPropertyFunctionList*(ctx: JSContext, obj: JSValue, tab: ptr JSCFunct
 proc JS_GetProperty*(ctx: JSContext, this_obj: JSValue, prop: JSAtom): JSValue
 proc JS_GetPropertyStr*(ctx: JSContext, this_obj: JSValue, prop: cstring): JSValue
 proc JS_GetPropertyUint32*(ctx: JSContext, this_obj: JSValue, idx: uint32): JSValue
-proc JS_GetOwnPropertyNames*(ctx: JSContext, ptab: ptr ptr JSPropertyEnum, plen: ptr uint32, obj: JSValue, flags: cint): int
+proc JS_GetOwnPropertyNames*(ctx: JSContext, ptab: ptr ptr JSPropertyEnum, plen: ptr uint32, obj: JSValue, flags: cint): cint
 
 proc JS_GetOwnProperty*(ctx: JSContext, desc: ptr JSPropertyDescriptor, obj: JSValue, prop: JSAtom): cint
 proc JS_Call*(ctx: JSContext, func_obj, this_obj: JSValue, argc: cint, argv: ptr JSValue): JSValue
diff --git a/src/js/javascript.nim b/src/js/javascript.nim
index c0c55237..876f7127 100644
--- a/src/js/javascript.nim
+++ b/src/js/javascript.nim
@@ -515,7 +515,7 @@ proc fromJSTable[A, B](ctx: JSContext, val: JSValue): Option[Table[A, B]] =
   var ptab: ptr JSPropertyEnum
   var plen: uint32
   let flags = cint(JS_GPN_STRING_MASK)
-  if JS_GetOwnPropertyNames(ctx, addr ptab, addr plen, val, flags) < -1:
+  if JS_GetOwnPropertyNames(ctx, addr ptab, addr plen, val, flags) == -1:
     # exception
     return none(Table[A, B])
   defer:
@@ -744,6 +744,8 @@ proc toJS*[T](ctx: JSContext, obj: T): JSValue =
     return a
   elif T is enum:
     return toJS(ctx, int(obj))
+  elif T is JSValue:
+    return obj
   else:
     if obj == nil:
       return JS_NULL