details: https://github.com/nginx/njs/commit/1a482317e65d52cdaa9f0e8bff0a8e624f359b9e branches: master commit: 1a482317e65d52cdaa9f0e8bff0a8e624f359b9e user: Dmitry Volyntsev <xei...@nginx.com> date: Mon, 13 Jan 2025 22:00:10 -0800 description: QuickJS: accept ArrayBuffer as an arument for qjs_typed_array_data().
--- src/qjs.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/qjs.c b/src/qjs.c index f9615668..487a03fc 100644 --- a/src/qjs.c +++ b/src/qjs.c @@ -456,17 +456,25 @@ qjs_bytes_free(JSContext *ctx, qjs_bytes_t *bytes) JSValue qjs_typed_array_data(JSContext *ctx, JSValueConst value, njs_str_t *data) { - size_t byte_offset, byte_length; + size_t byte_offset, byte_length; + JSValue ab; + + /* TODO: DataView. */ - value = JS_GetTypedArrayBuffer(ctx, value, &byte_offset, &byte_length, + ab = JS_GetTypedArrayBuffer(ctx, value, &byte_offset, &byte_length, NULL); - if (JS_IsException(value)) { - return value; + if (JS_IsException(ab)) { + data->start = JS_GetArrayBuffer(ctx, &data->length, value); + if (data->start == NULL) { + return JS_EXCEPTION; + } + + return JS_UNDEFINED; } - data->start = JS_GetArrayBuffer(ctx, &data->length, value); + data->start = JS_GetArrayBuffer(ctx, &data->length, ab); - JS_FreeValue(ctx, value); + JS_FreeValue(ctx, ab); if (data->start == NULL) { return JS_EXCEPTION; _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel