From 0f453d3f1213e50c439e62966874e597123a9ad0 Mon Sep 17 00:00:00 2001 From: Icemic Date: Thu, 23 May 2024 23:50:15 +0800 Subject: [PATCH 1/2] Add JS_FreePropertyEnum corresponding to JS_GetOwnPropertyNames --- quickjs.c | 6 ++++++ quickjs.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/quickjs.c b/quickjs.c index 54d1778ed..41542722e 100644 --- a/quickjs.c +++ b/quickjs.c @@ -7813,6 +7813,12 @@ int JS_GetOwnProperty(JSContext *ctx, JSPropertyDescriptor *desc, return JS_GetOwnPropertyInternal(ctx, desc, JS_VALUE_GET_OBJ(obj), prop); } +void JS_FreePropertyEnum(JSContext *ctx, JSPropertyEnum *tab, + uint32_t len) +{ + js_free_prop_enum(ctx, tab, len); +} + /* return -1 if exception (Proxy object only) or TRUE/FALSE */ int JS_IsExtensible(JSContext *ctx, JSValue obj) { diff --git a/quickjs.h b/quickjs.h index cb5d52803..dc653d70f 100644 --- a/quickjs.h +++ b/quickjs.h @@ -707,6 +707,8 @@ JS_EXTERN int JS_GetOwnPropertyNames(JSContext *ctx, JSPropertyEnum **ptab, uint32_t *plen, JSValue obj, int flags); JS_EXTERN int JS_GetOwnProperty(JSContext *ctx, JSPropertyDescriptor *desc, JSValue obj, JSAtom prop); +JS_EXTERN void JS_FreePropertyEnum(JSContext *ctx, JSPropertyEnum *tab, + uint32_t len); JS_EXTERN JSValue JS_Call(JSContext *ctx, JSValue func_obj, JSValue this_obj, int argc, JSValue *argv); From 3b56010b8db121dc3161b2c9ffcf40ad8fb8a3f7 Mon Sep 17 00:00:00 2001 From: Icemic Date: Thu, 23 May 2024 23:52:02 +0800 Subject: [PATCH 2/2] Add JS_GetLength --- quickjs.c | 4 ++++ quickjs.h | 1 + 2 files changed, 5 insertions(+) diff --git a/quickjs.c b/quickjs.c index 41542722e..198b810de 100644 --- a/quickjs.c +++ b/quickjs.c @@ -6975,6 +6975,10 @@ static JSValue JS_GetPrototypeFree(JSContext *ctx, JSValue obj) return obj1; } +int JS_GetLength(JSContext *ctx, JSValue obj, int64_t *pres) { + return js_get_length64(ctx, pres, obj); +} + /* return TRUE, FALSE or (-1) in case of exception */ static int JS_OrdinaryIsInstanceOf(JSContext *ctx, JSValue val, JSValue obj) diff --git a/quickjs.h b/quickjs.h index dc653d70f..01a987ca8 100644 --- a/quickjs.h +++ b/quickjs.h @@ -694,6 +694,7 @@ JS_EXTERN int JS_PreventExtensions(JSContext *ctx, JSValue obj); JS_EXTERN int JS_DeleteProperty(JSContext *ctx, JSValue obj, JSAtom prop, int flags); JS_EXTERN int JS_SetPrototype(JSContext *ctx, JSValue obj, JSValue proto_val); JS_EXTERN JSValue JS_GetPrototype(JSContext *ctx, JSValue val); +JS_EXTERN int JS_GetLength(JSContext *ctx, JSValue obj, int64_t *pres); #define JS_GPN_STRING_MASK (1 << 0) #define JS_GPN_SYMBOL_MASK (1 << 1)