From: Dmitry Volyntsev Date: Tue, 8 Oct 2024 05:41:24 +0000 (-0700) Subject: Optimized ngx_qjs_string(). X-Git-Tag: 0.8.7~16 X-Git-Url: http://www.kaiwu.me/postgresql/commit/static/gitweb.js?a=commitdiff_plain;h=3a4349e6b2b001001c64dd48f7863c5820cdf3e6;p=njs.git Optimized ngx_qjs_string(). Doing JS_IsString() check first before a heavy-weight call to JS_GetTypedArrayBuffer() which throws an exception when argument is not a typed array. --- diff --git a/nginx/ngx_js.c b/nginx/ngx_js.c index 5fe3dc84..98e48dc2 100644 --- a/nginx/ngx_js.c +++ b/nginx/ngx_js.c @@ -1472,6 +1472,10 @@ ngx_qjs_string(ngx_engine_t *e, JSValueConst val, ngx_str_t *dst) cx = e->u.qjs.ctx; + if (JS_IsString(val)) { + goto string; + } + buffer = JS_GetTypedArrayBuffer(cx, val, &byte_offset, &byte_length, NULL); if (!JS_IsException(buffer)) { start = JS_GetArrayBuffer(cx, &dst->len, buffer); @@ -1492,6 +1496,8 @@ ngx_qjs_string(ngx_engine_t *e, JSValueConst val, ngx_str_t *dst) } } +string: + str = JS_ToCString(cx, val); if (str == NULL) { return NGX_ERROR;