]> git.kaiwu.me - njs.git/commitdiff
QuickJS: calling njs_chb_destroy() in qjs_string_create_chb() internally.
authorhongzhidao <hongzhidao@gmail.com>
Tue, 18 Mar 2025 13:34:59 +0000 (21:34 +0800)
committerhongzhidao <hongzhidao@gmail.com>
Wed, 19 Mar 2025 07:46:46 +0000 (15:46 +0800)
No functional changes.

external/qjs_query_string_module.c
nginx/ngx_http_js_module.c
src/qjs.c

index 42322234262eca6118daa2a867c27ebfcd9c1a8e..63553a5349f71585975bd65b5f74102ff186fd0c 100644 (file)
@@ -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:
 
index ae970eb1b8465495582458057417c3f5817d2ef3..369ae50beb831a633027cecc5062373aadc962c9 100644 (file)
@@ -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;
 }
 
 
index 52401983ac520eb3d9e5cba1d54c60167a6b66fe..38015bb9355c9a4527d9347cc0b99a6a24aa91aa 100644 (file)
--- 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");
     }