diff --git a/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py b/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py index 6a42e2517d089..4ccd21bfd1f7b 100644 --- a/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py +++ b/third_party/blink/renderer/bindings/scripts/bind_gen/interface.py @@ -2483,12 +2483,14 @@ def make_no_alloc_direct_call_callback_def(cg_context, function_name, "${v8_arg0_receiver};")), S("handle_scope", "v8::HandleScope handle_scope(${isolate});") ]) - # NADC stubs won't have any JS re-entry during argument conversion, so - # skip detach check for PassAsSpan arguments. + # NADC stubs that accept v8::Local for [PassAsSpan] arguments + # *can* re-enter JS via the IDL sequence<> fallback (Symbol.iterator), so + # the ArrayBuffer detach check must remain enabled. It is a single boolean + # check on a v8::Local that is already held; the cost is negligible. body.register_code_symbol( S( "kPerformDetachCheckFlag", - "constexpr auto kPerformDetachCheckFlag = PassAsSpanMarkerBase::Flags::kNone;" + "constexpr auto kPerformDetachCheckFlag = PassAsSpanMarkerBase::Flags::kPerformDetachCheck;" )) bind_callback_local_vars(body, cg_context)