[njs] QuickJS: fixed njs_qjs_object_completions().
noreply at nginx.com
noreply at nginx.com
Wed Mar 19 05:28:02 UTC 2025
details: https://github.com/nginx/njs/commit/f6a2a795e9df4911dde8d0c3f02dd5a83c610ca5
branches: master
commit: f6a2a795e9df4911dde8d0c3f02dd5a83c610ca5
user: hongzhidao <hongzhidao at gmail.com>
date: Wed, 19 Mar 2025 11:18:41 +0800
description:
QuickJS: fixed njs_qjs_object_completions().
This commit also exposed qjs_free_prop_enum() as public.
---
external/njs_shell.c | 5 ++---
external/qjs_query_string_module.c | 13 -------------
src/qjs.c | 13 +++++++++++++
src/qjs.h | 2 ++
4 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/external/njs_shell.c b/external/njs_shell.c
index 1228b374..aeab226c 100644
--- a/external/njs_shell.c
+++ b/external/njs_shell.c
@@ -2950,7 +2950,6 @@ njs_qjs_object_completions(njs_engine_t *engine, JSContext *ctx,
for (n = 0; n < length; n++) {
key.start = (u_char *) JS_AtomToCString(ctx, ptab[n].atom);
- JS_FreeAtom(ctx, ptab[n].atom);
if (njs_slow_path(key.start == NULL)) {
goto fail;
}
@@ -2993,7 +2992,7 @@ next:
JS_FreeCString(ctx, (const char *) key.start);
}
- js_free_rt(JS_GetRuntime(ctx), ptab);
+ qjs_free_prop_enum(ctx, ptab, length);
prototype = JS_GetPrototype(ctx, object);
if (JS_IsException(prototype)) {
@@ -3017,7 +3016,7 @@ fail:
}
if (ptab != NULL) {
- js_free_rt(JS_GetRuntime(ctx), ptab);
+ qjs_free_prop_enum(ctx, ptab, length);
}
JS_FreeValue(ctx, object);
diff --git a/external/qjs_query_string_module.c b/external/qjs_query_string_module.c
index 3059ee1b..42322234 100644
--- a/external/qjs_query_string_module.c
+++ b/external/qjs_query_string_module.c
@@ -727,19 +727,6 @@ qjs_query_string_push_array(JSContext *cx, njs_chb_t *chain, JSValue key,
}
-static void
-qjs_free_prop_enum(JSContext *cx, JSPropertyEnum *tab, uint32_t len)
-{
- uint32_t i;
-
- for (i = 0; i < len; i++) {
- JS_FreeAtom(cx, tab[i].atom);
- }
-
- js_free(cx, tab);
-}
-
-
static JSValue
qjs_query_string_stringify_internal(JSContext *cx, JSValue obj, njs_str_t *sep,
njs_str_t *eq, JSValue encoder)
diff --git a/src/qjs.c b/src/qjs.c
index 15a575a2..52401983 100644
--- a/src/qjs.c
+++ b/src/qjs.c
@@ -1027,6 +1027,19 @@ qjs_string_create_chb(JSContext *cx, njs_chb_t *chain)
}
+void
+qjs_free_prop_enum(JSContext *ctx, JSPropertyEnum *tab, uint32_t len)
+{
+ uint32_t i;
+
+ for(i = 0; i < len; i++) {
+ JS_FreeAtom(ctx, tab[i].atom);
+ }
+
+ js_free(ctx, tab);
+}
+
+
JSValue
qjs_string_hex(JSContext *cx, const njs_str_t *src)
{
diff --git a/src/qjs.h b/src/qjs.h
index 54f96dfe..7c13f039 100644
--- a/src/qjs.h
+++ b/src/qjs.h
@@ -127,6 +127,8 @@ JSValue qjs_typed_array_data(JSContext *ctx, JSValueConst value,
JS_NewStringLen(ctx, (const char *) (data), len)
JSValue qjs_string_create_chb(JSContext *cx, njs_chb_t *chain);
+void qjs_free_prop_enum(JSContext *ctx, JSPropertyEnum *tab, uint32_t len);
+
JSValue qjs_string_hex(JSContext *cx, const njs_str_t *src);
JSValue qjs_string_base64(JSContext *cx, const njs_str_t *src);
JSValue qjs_string_base64url(JSContext *cx, const njs_str_t *src);
More information about the nginx-devel
mailing list