[njs] QuickJS: calling njs_chb_destroy() in qjs_string_create_chb() internally.
noreply at nginx.com
noreply at nginx.com
Wed Mar 19 07:47:02 UTC 2025
details: https://github.com/nginx/njs/commit/1d36e231ed6a317cc9d01f8223091619e89e7a65
branches: master
commit: 1d36e231ed6a317cc9d01f8223091619e89e7a65
user: hongzhidao <hongzhidao at gmail.com>
date: Tue, 18 Mar 2025 21:34:59 +0800
description:
QuickJS: calling njs_chb_destroy() in qjs_string_create_chb() internally.
No functional changes.
---
external/qjs_query_string_module.c | 17 +++--------------
nginx/ngx_http_js_module.c | 30 ++++++++++++------------------
src/qjs.c | 2 ++
3 files changed, 17 insertions(+), 32 deletions(-)
diff --git a/external/qjs_query_string_module.c b/external/qjs_query_string_module.c
index 42322234..63553a53 100644
--- a/external/qjs_query_string_module.c
+++ b/external/qjs_query_string_module.c
@@ -171,7 +171,6 @@ static JSValue
qjs_query_string_decode(JSContext *cx, const u_char *start, size_t size)
{
u_char *dst;
- JSValue ret;
uint32_t cp;
njs_chb_t chain;
const u_char *p, *end;
@@ -250,11 +249,7 @@ qjs_query_string_decode(JSContext *cx, const u_char *start, size_t size)
}
- ret = qjs_string_create_chb(cx, &chain);
-
- njs_chb_destroy(&chain);
-
- return ret;
+ return qjs_string_create_chb(cx, &chain);
}
@@ -281,8 +276,6 @@ qjs_query_string_escape(JSContext *cx, JSValueConst this_val, int argc,
ret = qjs_string_create_chb(cx, &chain);
- njs_chb_destroy(&chain);
-
JS_FreeCString(cx, (char *) str.start);
return ret;
@@ -733,7 +726,7 @@ qjs_query_string_stringify_internal(JSContext *cx, JSValue obj, njs_str_t *sep,
{
int rc;
uint32_t n, length;
- JSValue key, val, ret;
+ JSValue key, val;
njs_str_t sep_val, eq_val;
njs_chb_t chain;
JSPropertyEnum *ptab;
@@ -809,11 +802,7 @@ qjs_query_string_stringify_internal(JSContext *cx, JSValue obj, njs_str_t *sep,
qjs_free_prop_enum(cx, ptab, length);
}
- ret = qjs_string_create_chb(cx, &chain);
-
- njs_chb_destroy(&chain);
-
- return ret;
+ return qjs_string_create_chb(cx, &chain);
fail:
diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c
index ae970eb1..369ae50b 100644
--- a/nginx/ngx_http_js_module.c
+++ b/nginx/ngx_http_js_module.c
@@ -6400,10 +6400,9 @@ ngx_http_qjs_header_generic(JSContext *cx, ngx_http_request_t *r,
ngx_list_t *headers, ngx_table_elt_t **ph, ngx_str_t *name,
JSPropertyDescriptor *pdesc, unsigned flags)
{
- int ret;
u_char sep;
- njs_chb_t chain;
JSValue val;
+ njs_chb_t chain;
ngx_uint_t i;
ngx_list_part_t *part;
ngx_table_elt_t *header, *h;
@@ -6493,6 +6492,10 @@ ngx_http_qjs_header_generic(JSContext *cx, ngx_http_request_t *r,
return 1;
}
+ if (pdesc == NULL) {
+ return 1;
+ }
+
NJS_CHB_CTX_INIT(&chain, cx);
sep = flags & NJS_HEADER_SEMICOLON ? ';' : ',';
@@ -6503,24 +6506,15 @@ ngx_http_qjs_header_generic(JSContext *cx, ngx_http_request_t *r,
njs_chb_append_literal(&chain, " ");
}
- ret = 1;
-
- if (pdesc != NULL) {
- pdesc->flags = JS_PROP_ENUMERABLE;
- pdesc->getter = JS_UNDEFINED;
- pdesc->setter = JS_UNDEFINED;
- pdesc->value = qjs_string_create_chb(cx, &chain);
- if (JS_IsException(pdesc->value)) {
- ret = -1;
- goto done;
- }
+ pdesc->flags = JS_PROP_ENUMERABLE;
+ pdesc->getter = JS_UNDEFINED;
+ pdesc->setter = JS_UNDEFINED;
+ pdesc->value = qjs_string_create_chb(cx, &chain);
+ if (JS_IsException(pdesc->value)) {
+ return -1;
}
-done:
-
- njs_chb_destroy(&chain);
-
- return ret;
+ return 1;
}
diff --git a/src/qjs.c b/src/qjs.c
index 52401983..38015bb9 100644
--- a/src/qjs.c
+++ b/src/qjs.c
@@ -1015,6 +1015,8 @@ qjs_string_create_chb(JSContext *cx, njs_chb_t *chain)
njs_str_t str;
ret = njs_chb_join(chain, &str);
+ njs_chb_destroy(chain);
+
if (ret != NJS_OK) {
return JS_ThrowInternalError(cx, "failed to create string");
}
More information about the nginx-devel
mailing list