aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/bindings/utils.rs
diff options
context:
space:
mode:
authoryvt <i@yvt.jp>2021-07-12 01:30:02 +0900
committeryvt <i@yvt.jp>2021-07-12 01:30:02 +0900
commit3550270cd0047c6585004cb842fa8e6d1d9b0abc (patch)
tree630cddb23b6c408bbc7282cd653c9ccb50aa5214 /components/script/dom/bindings/utils.rs
parente7866271990aa21b4d829e0991e881cd85383e06 (diff)
downloadservo-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.rs8
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 {