diff options
author | yvt <i@yvt.jp> | 2021-07-12 01:30:02 +0900 |
---|---|---|
committer | yvt <i@yvt.jp> | 2021-07-12 01:30:02 +0900 |
commit | 3550270cd0047c6585004cb842fa8e6d1d9b0abc (patch) | |
tree | 630cddb23b6c408bbc7282cd653c9ccb50aa5214 /components/script/dom/bindings/utils.rs | |
parent | e7866271990aa21b4d829e0991e881cd85383e06 (diff) | |
download | servo-3550270cd0047c6585004cb842fa8e6d1d9b0abc.tar.gz servo-3550270cd0047c6585004cb842fa8e6d1d9b0abc.zip |
fix(script): implement the destroy-principals callback correctly
Diffstat (limited to 'components/script/dom/bindings/utils.rs')
-rw-r--r-- | components/script/dom/bindings/utils.rs | 8 |
1 files 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<MutableOrigin>).drop_in_place(); + Box::from_raw(GetRustJSPrincipalsPrivate(principals) as *mut MutableOrigin); + DestroyRustJSPrincipals(principals); } const PRINCIPALS_CALLBACKS: JSPrincipalsCallbacks = JSPrincipalsCallbacks { |