pthread_cond_signal(&console->agent_cond);
pthread_mutex_unlock(&console->agent_mutex);
- args[0] = qjs_new_external_array_buffer(ctx,
- agent->broadcast_sab_buf, agent->broadcast_sab_size, 1);
+#ifdef NJS_HAVE_QUICKJS_ARRAY_BUFFER_MAX_LEN
+ args[0] = JS_NewArrayBuffer(ctx, agent->broadcast_sab_buf,
+ agent->broadcast_sab_size, 0,
+ NULL, NULL, 1);
+#else
+ args[0] = JS_NewArrayBuffer(ctx, agent->broadcast_sab_buf,
+ agent->broadcast_sab_size,
+ NULL, NULL, 1);
+#endif
args[1] = JS_NewInt32(ctx, agent->broadcast_val);
ret_val = JS_Call(ctx, agent->broadcast_func, JS_UNDEFINED,
static JSValue
qjs_buffer_digest(JSContext *cx, const njs_str_t *src)
{
- return qjs_buffer_create(cx, src->start, src->length);
+ return qjs_buffer_copy(cx, src->start, src->length);
}
njs_str_t data;
if (encoding == NULL) {
- return qjs_buffer_create(cx, str->start, str->length);
+ return qjs_buffer_copy(cx, str->start, str->length);
} else if (encoding->encode_length != NULL) {
data.length = encoding->encode_length(cx, str);
goto fail;
}
- ret = qjs_new_array_buffer(cx, dst, outlen);
+ ret = qjs_array_buffer_adopt(cx, dst, outlen);
fail:
outlen += taglen;
}
- ret = qjs_new_array_buffer(cx, dst, outlen);
+ ret = qjs_array_buffer_adopt(cx, dst, outlen);
EVP_CIPHER_CTX_free(ctx);
done:
- ret = qjs_new_array_buffer(cx, dst, len);
+ ret = qjs_array_buffer_adopt(cx, dst, len);
fail:
olen += olen2;
- ret = qjs_new_array_buffer(cx, dst, olen);
+ ret = qjs_array_buffer_adopt(cx, dst, olen);
fail:
goto fail;
}
- ret = qjs_new_array_buffer(cx, dst, olen);
+ ret = qjs_array_buffer_adopt(cx, dst, olen);
fail:
return JS_EXCEPTION;
}
- return qjs_new_array_buffer(cx, dst, size);
+ return qjs_array_buffer_adopt(cx, dst, size);
}
dkey->u.s.raw.length = length;
} else {
- result = qjs_new_array_buffer(cx, k, length);
+ result = qjs_array_buffer_adopt(cx, k, length);
}
return qjs_promise_result(cx, result);
} else {
- ret = qjs_new_array_buffer(cx, k, length);
+ ret = qjs_array_buffer_adopt(cx, k, length);
}
return qjs_promise_result(cx, ret);
return JS_EXCEPTION;
}
- ret = qjs_new_array_buffer(cx, dst, olen);
+ ret = qjs_array_buffer_adopt(cx, dst, olen);
return ret;
}
}
if (!verify) {
- ret = qjs_new_array_buffer(cx, dst, outlen);
+ ret = qjs_array_buffer_adopt(cx, dst, outlen);
if (JS_IsException(ret)) {
goto fail;
}
ret = qjs_string_create_chb(cx, &chain);
} else {
- ret = qjs_buffer_chb_alloc(cx, &chain);
+ ret = qjs_buffer_chb_copy(cx, &chain);
njs_chb_destroy(&chain);
}
js_free(ctx, dictionary_copy);
- ret = qjs_buffer_chb_alloc(ctx, &chain);
+ ret = qjs_buffer_chb_copy(ctx, &chain);
njs_chb_destroy(&chain);
js_free(ctx, dictionary_copy);
- ret = qjs_buffer_chb_alloc(ctx, &chain);
+ ret = qjs_buffer_chb_copy(ctx, &chain);
njs_chb_destroy(&chain);
#define ngx_qjs_prop(cx, type, start, len) \
((type == NGX_JS_STRING) ? qjs_string_create(cx, start, len) \
- : qjs_buffer_create(cx, (u_char *) start, len))
+ : qjs_buffer_copy(cx, (u_char *) start, len))
#define ngx_qjs_meta(cx, i) \
((uintptr_t *) JS_GetRuntimeOpaque(JS_GetRuntime(cx)))[i]
njs_chb_join_to(&response->chain, p);
njs_chb_destroy(&response->chain);
- result = qjs_new_array_buffer(cx, p, size);
+ result = qjs_array_buffer_adopt(cx, p, size);
if (JS_IsException(result)) {
js_free(cx, p);
}
#endif
-JSValue
-qjs_new_array_buffer(JSContext *cx, uint8_t *src, size_t len)
-{
- return qjs_array_buffer_create(cx, src, len, qjs_array_buffer_free, 0);
-}
-
-
/*
- * The memory is not managed by the engine, the caller is responsible for
- * keeping it alive while the buffer is reachable.
+ * The allocation must use the runtime allocator. Ownership is transferred
+ * on success; the caller retains it on failure.
*/
JSValue
-qjs_new_external_array_buffer(JSContext *cx, uint8_t *src, size_t len,
- int is_shared)
+qjs_array_buffer_adopt(JSContext *cx, uint8_t *src, size_t len)
{
- return qjs_array_buffer_create(cx, src, len, NULL, is_shared);
+ return qjs_array_buffer_create(cx, src, len, qjs_array_buffer_free, 0);
}
JSValue qjs_new_uint8_array(JSContext *ctx, int argc, JSValueConst *argv);
-JSValue qjs_new_array_buffer(JSContext *cx, uint8_t *src, size_t len);
-JSValue qjs_new_external_array_buffer(JSContext *cx, uint8_t *src, size_t len,
- int is_shared);
+JSValue qjs_array_buffer_adopt(JSContext *cx, uint8_t *src, size_t len);
JSValue qjs_buffer_alloc(JSContext *ctx, uint64_t size);
-JSValue qjs_buffer_create(JSContext *ctx, u_char *start, size_t size);
-JSValue qjs_buffer_chb_alloc(JSContext *ctx, njs_chb_t *chain);
+JSValue qjs_buffer_copy(JSContext *ctx, u_char *start, size_t size);
+JSValue qjs_buffer_chb_copy(JSContext *ctx, njs_chb_t *chain);
typedef int (*qjs_buffer_encode_t)(JSContext *ctx, const njs_str_t *src,
njs_str_t *dst);
JSValue
-qjs_buffer_create(JSContext *ctx, u_char *start, size_t size)
+qjs_buffer_copy(JSContext *ctx, u_char *start, size_t size)
{
JSValue buffer, ret;
njs_str_t dst;
JSValue
-qjs_buffer_chb_alloc(JSContext *ctx, njs_chb_t *chain)
+qjs_buffer_chb_copy(JSContext *ctx, njs_chb_t *chain)
{
ssize_t size;
JSValue ret;