From 1ae01ccaed8500e6ae9f414eaa96e300e9749aa6 Mon Sep 17 00:00:00 2001 From: Demi Obenour Date: Tue, 1 Nov 2016 22:36:40 -0400 Subject: [PATCH] Fix code involving empty type references by changing it to use pointers instead. Fixes #311 --- src/conversions.rs | 4 ++-- src/jsval.rs | 10 +++++----- tests/typedarray.rs | 1 - 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/conversions.rs b/src/conversions.rs index 95f2f14b4..1f91e9b99 100644 --- a/src/conversions.rs +++ b/src/conversions.rs @@ -539,7 +539,7 @@ impl ToJSValConvertible for Vec { index as u32, val.handle(), JSPROP_ENUMERATE, None, None)); } - rval.set(ObjectValue(&*js_array.handle().get())); + rval.set(ObjectValue(js_array.handle().get())); } } @@ -629,7 +629,7 @@ impl ToJSValConvertible for *mut JSObject { impl ToJSValConvertible for NonZero<*mut JSObject> { #[inline] unsafe fn to_jsval(&self, cx: *mut JSContext, rval: MutableHandleValue) { - rval.set(ObjectValue(&***self)); + rval.set(ObjectValue(**self)); assert!(JS_WrapValue(cx, rval)); } } diff --git a/src/jsval.rs b/src/jsval.rs index baeb12701..fb053de1c 100644 --- a/src/jsval.rs +++ b/src/jsval.rs @@ -159,16 +159,16 @@ pub fn BooleanValue(b: bool) -> JSVal { #[cfg(target_pointer_width = "64")] #[inline(always)] -pub fn ObjectValue(o: &JSObject) -> JSVal { - let bits = o as *const JSObject as usize as u64; +pub fn ObjectValue(o: *mut JSObject) -> JSVal { + let bits = o as usize as u64; assert!((bits >> JSVAL_TAG_SHIFT) == 0); BuildJSVal(ValueTag::OBJECT, bits) } #[cfg(target_pointer_width = "32")] #[inline(always)] -pub fn ObjectValue(o: &JSObject) -> JSVal { - let bits = o as *const JSObject as usize as u64; +pub fn ObjectValue(o: *mut JSObject) -> JSVal { + let bits = o as usize as u64; BuildJSVal(ValueTag::OBJECT, bits) } @@ -177,7 +177,7 @@ pub fn ObjectOrNullValue(o: *mut JSObject) -> JSVal { if o.is_null() { NullValue() } else { - ObjectValue(unsafe { &*o }) + ObjectValue(o) } } diff --git a/tests/typedarray.rs b/tests/typedarray.rs index 37553b9ff..cd2f127f3 100644 --- a/tests/typedarray.rs +++ b/tests/typedarray.rs @@ -7,7 +7,6 @@ extern crate js; use js::jsapi::CompartmentOptions; use js::jsapi::JSAutoCompartment; -use js::jsapi::JSITER_OWNONLY; use js::jsapi::JS_NewGlobalObject; use js::jsapi::OnNewGlobalHookOption; use js::jsval::UndefinedValue;