aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-02-12 14:06:49 -0700
committerbors-servo <metajack+bors@gmail.com>2015-02-12 14:06:49 -0700
commit6d1a2d90e531e82c8692af469f308e539d15bedb (patch)
tree5c5e5aeaa0fe27d84ea5cfb0925c1fe4a3e1ebe0 /components/script/dom
parentb351b216c6ac5df1913ddd589d3300d7cd07ebb0 (diff)
parentdbb0f49bc79d90147c398406668ace4db6d5b6d5 (diff)
downloadservo-6d1a2d90e531e82c8692af469f308e539d15bedb.tar.gz
servo-6d1a2d90e531e82c8692af469f308e539d15bedb.zip
auto merge of #4909 : saneyuki/servo/warn, r=jdm
follow up #4893
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/bindings/cell.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/components/script/dom/bindings/cell.rs b/components/script/dom/bindings/cell.rs
index fc0a845b748..81085256821 100644
--- a/components/script/dom/bindings/cell.rs
+++ b/components/script/dom/bindings/cell.rs
@@ -10,7 +10,7 @@ use js::jsapi::{JSTracer};
use util::task_state;
use util::task_state::{SCRIPT, IN_GC};
-use std::cell::{RefCell, Ref, RefMut};
+use std::cell::{BorrowState, RefCell, Ref, RefMut};
/// A mutable field in the DOM.
///
@@ -52,7 +52,7 @@ impl<T> DOMRefCell<T> {
///
/// For safety checks in debug builds only.
pub fn is_mutably_borrowed(&self) -> bool {
- self.value.try_borrow().is_some()
+ self.value.borrow_state() == BorrowState::Writing
}
/// Attempts to immutably borrow the wrapped value.
@@ -67,7 +67,10 @@ impl<T> DOMRefCell<T> {
/// Panics if this is called off the script thread.
pub fn try_borrow<'a>(&'a self) -> Option<Ref<'a, T>> {
debug_assert!(task_state::get().is_script());
- self.value.try_borrow()
+ match self.value.borrow_state() {
+ BorrowState::Writing => None,
+ _ => Some(self.value.borrow()),
+ }
}
/// Mutably borrows the wrapped value.
@@ -82,7 +85,10 @@ impl<T> DOMRefCell<T> {
/// Panics if this is called off the script thread.
pub fn try_borrow_mut<'a>(&'a self) -> Option<RefMut<'a, T>> {
debug_assert!(task_state::get().is_script());
- self.value.try_borrow_mut()
+ match self.value.borrow_state() {
+ BorrowState::Unused => Some(self.value.borrow_mut()),
+ _ => None,
+ }
}
}