diff options
| author | Divy Srivastava <dj.srivastava23@gmail.com> | 2022-09-07 16:21:30 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-07 16:21:30 +0530 |
| commit | d57f9d560d7b675bda3cf3ba0ac69201b73467b3 (patch) | |
| tree | 4103a67ede48f3ab0a7be55a91de492e8f096631 /core | |
| parent | 7f4b043f322f87110251ce7d7e52f444ad1f0940 (diff) | |
fix(ext/flash): use utf8 length as Content-Length (#15793)
Diffstat (limited to 'core')
| -rw-r--r-- | core/01_core.js | 1 | ||||
| -rw-r--r-- | core/ops_builtin.rs | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/core/01_core.js b/core/01_core.js index e5e2c9fd5..ddd3ac82d 100644 --- a/core/01_core.js +++ b/core/01_core.js @@ -323,6 +323,7 @@ opNames: () => ops.op_op_names(), eventLoopHasMoreWork: () => ops.op_event_loop_has_more_work(), setPromiseRejectCallback: (fn) => ops.op_set_promise_reject_callback(fn), + byteLength: (str) => ops.op_str_byte_length(str), }); ObjectAssign(globalThis.__bootstrap, { core }); diff --git a/core/ops_builtin.rs b/core/ops_builtin.rs index bd19b74f6..26ab4bed5 100644 --- a/core/ops_builtin.rs +++ b/core/ops_builtin.rs @@ -39,6 +39,7 @@ pub(crate) fn init_builtins() -> Extension { op_metrics::decl(), op_format_file_name::decl(), op_is_proxy::decl(), + op_str_byte_length::decl(), ]) .ops(crate::ops_builtin_v8::init_builtins_v8()) .build() @@ -195,3 +196,15 @@ fn op_format_file_name(file_name: String) -> String { fn op_is_proxy(value: serde_v8::Value) -> bool { value.v8_value.is_proxy() } + +#[op(v8)] +fn op_str_byte_length( + scope: &mut v8::HandleScope, + value: serde_v8::Value, +) -> u32 { + if let Ok(string) = v8::Local::<v8::String>::try_from(value.v8_value) { + string.utf8_length(scope) as u32 + } else { + 0 + } +} |
