diff --git a/Cargo.lock b/Cargo.lock index cacec0c468b..eef58c1decb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5228,7 +5228,7 @@ dependencies = [ [[package]] name = "mozjs" version = "0.14.1" -source = "git+https://github.com/servo/mozjs#128e1e230a0155ed9395c718184f34bddc045860" +source = "git+https://github.com/servo/mozjs#9c017973a4bf9186df2335d8c96ed3554b84434e" dependencies = [ "bindgen 0.71.1", "cc", @@ -5239,8 +5239,8 @@ dependencies = [ [[package]] name = "mozjs_sys" -version = "0.128.13-0" -source = "git+https://github.com/servo/mozjs#128e1e230a0155ed9395c718184f34bddc045860" +version = "0.128.13-1" +source = "git+https://github.com/servo/mozjs#9c017973a4bf9186df2335d8c96ed3554b84434e" dependencies = [ "bindgen 0.71.1", "cc", diff --git a/components/script/dom/bindings/structuredclone.rs b/components/script/dom/bindings/structuredclone.rs index 6047c783189..ae6dd1eac4e 100644 --- a/components/script/dom/bindings/structuredclone.rs +++ b/components/script/dom/bindings/structuredclone.rs @@ -20,8 +20,7 @@ use constellation_traits::{ }; use js::gc::RootedVec; use js::glue::{ - CopyJSStructuredCloneData, DeleteJSAutoStructuredCloneBuffer, GetLengthOfJSStructuredCloneData, - NewJSAutoStructuredCloneBuffer, WriteBytesToJSStructuredCloneData, + CopyJSStructuredCloneData, GetLengthOfJSStructuredCloneData, WriteBytesToJSStructuredCloneData, }; use js::jsapi::{ CloneDataPolicy, HandleObject as RawHandleObject, Heap, JS_IsExceptionPending, @@ -31,7 +30,9 @@ use js::jsapi::{ }; use js::jsval::UndefinedValue; use js::rust::wrappers::{JS_ReadStructuredClone, JS_WriteStructuredClone}; -use js::rust::{CustomAutoRooterGuard, HandleValue, MutableHandleValue}; +use js::rust::{ + CustomAutoRooterGuard, HandleValue, JSAutoStructuredCloneBufferWrapper, MutableHandleValue, +}; use script_bindings::conversions::{IDLInterface, SafeToJSValConvertible}; use strum::IntoEnumIterator; @@ -599,11 +600,11 @@ pub(crate) fn write( let mut sc_writer = StructuredDataWriter::default(); let sc_writer_ptr = &mut sc_writer as *mut _; - let scbuf = NewJSAutoStructuredCloneBuffer( + let scbuf = JSAutoStructuredCloneBufferWrapper::new( StructuredCloneScope::DifferentProcess, &STRUCTURED_CLONE_CALLBACKS, ); - let scdata = &mut ((*scbuf).data_); + let scdata = &mut ((*scbuf.as_raw_ptr()).data_); let policy = CloneDataPolicy { allowIntraClusterClonableSharedObjects_: false, allowSharedMemoryObjects_: false, @@ -633,8 +634,6 @@ pub(crate) fn write( CopyJSStructuredCloneData(scdata, data.as_mut_ptr()); data.set_len(nbytes); - DeleteJSAutoStructuredCloneBuffer(scbuf); - let data = StructuredSerializedData { serialized: data, ports: sc_writer.ports.take(), @@ -675,11 +674,11 @@ pub(crate) fn read( }; let sc_reader_ptr = &mut sc_reader as *mut _; unsafe { - let scbuf = NewJSAutoStructuredCloneBuffer( + let scbuf = JSAutoStructuredCloneBufferWrapper::new( StructuredCloneScope::DifferentProcess, &STRUCTURED_CLONE_CALLBACKS, ); - let scdata = &mut ((*scbuf).data_); + let scdata = &mut ((*scbuf.as_raw_ptr()).data_); WriteBytesToJSStructuredCloneData( data.serialized.as_mut_ptr() as *const u8, @@ -710,8 +709,6 @@ pub(crate) fn read( return Err(error); } - DeleteJSAutoStructuredCloneBuffer(scbuf); - let mut message_ports = vec![]; for reflector in sc_reader.roots.iter() { let Ok(message_port) = root_from_object::(reflector.get(), *cx) else {