From 3550270cd0047c6585004cb842fa8e6d1d9b0abc Mon Sep 17 00:00:00 2001 From: yvt Date: Mon, 12 Jul 2021 01:30:02 +0900 Subject: [PATCH] fix(script): implement the destroy-principals callback correctly --- components/script/dom/bindings/utils.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/components/script/dom/bindings/utils.rs b/components/script/dom/bindings/utils.rs index b7ae7a1392e..b2e4066fca3 100644 --- a/components/script/dom/bindings/utils.rs +++ b/components/script/dom/bindings/utils.rs @@ -19,7 +19,10 @@ use crate::script_runtime::JSContext as SafeJSContext; use js::conversions::ToJSValConvertible; use js::glue::JS_GetReservedSlot; use js::glue::{CallJitGetterOp, CallJitMethodOp, CallJitSetterOp, IsWrapper}; -use js::glue::{CreateRustJSPrincipals, GetRustJSPrincipalsPrivate, JSPrincipalsCallbacks}; +use js::glue::{ + CreateRustJSPrincipals, DestroyRustJSPrincipals, GetRustJSPrincipalsPrivate, + JSPrincipalsCallbacks, +}; use js::glue::{UnwrapObjectDynamic, UnwrapObjectStatic, RUST_JSID_TO_INT, RUST_JSID_TO_STRING}; use js::glue::{ RUST_FUNCTION_VALUE_TO_JITINFO, RUST_JSID_IS_INT, RUST_JSID_IS_STRING, RUST_JSID_IS_VOID, @@ -84,7 +87,8 @@ impl ServoJSPrincipal { } pub unsafe extern "C" fn destroy_servo_jsprincipal(principals: *mut JSPrincipals) { - (GetRustJSPrincipalsPrivate(principals) as *mut Box).drop_in_place(); + Box::from_raw(GetRustJSPrincipalsPrivate(principals) as *mut MutableOrigin); + DestroyRustJSPrincipals(principals); } const PRINCIPALS_CALLBACKS: JSPrincipalsCallbacks = JSPrincipalsCallbacks {