Add more assertions to ElementQueue diagnose a bug
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Nov 2016 06:18:16 +0000 (06:18 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 16 Nov 2016 06:18:16 +0000 (06:18 +0000)
https://bugs.webkit.org/show_bug.cgi?id=164814

Reviewed by Yusuke Suzuki.

Add more assertions to check the sanity of the element queue.
Also made them all release assertions so that we can catch them better.

* dom/CustomElementReactionQueue.cpp:
(WebCore::CustomElementReactionStack::ElementQueue::add):
(WebCore::CustomElementReactionStack::ElementQueue::invokeAll):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@208785 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/dom/CustomElementReactionQueue.cpp
Source/WebCore/dom/CustomElementReactionQueue.h

index 8a30ab5..984cad0 100644 (file)
@@ -1,3 +1,17 @@
+2016-11-15  Ryosuke Niwa  <rniwa@webkit.org>
+
+        Add more assertions to ElementQueue diagnose a bug
+        https://bugs.webkit.org/show_bug.cgi?id=164814
+
+        Reviewed by Yusuke Suzuki.
+
+        Add more assertions to check the sanity of the element queue.
+        Also made them all release assertions so that we can catch them better.
+
+        * dom/CustomElementReactionQueue.cpp:
+        (WebCore::CustomElementReactionStack::ElementQueue::add):
+        (WebCore::CustomElementReactionStack::ElementQueue::invokeAll):
+
 2016-11-15  Chris Dumez  <cdumez@apple.com>
 
         Simplify Element::stripScriptingAttributes()
index fe7d498..07c5abe 100644 (file)
@@ -205,7 +205,7 @@ void CustomElementReactionQueue::invokeAll(Element& element)
 
 inline void CustomElementReactionStack::ElementQueue::add(Element& element)
 {
-    ASSERT(!m_invoking);
+    RELEASE_ASSERT(!m_invoking);
     // FIXME: Avoid inserting the same element multiple times.
     m_elements.append(element);
 }
@@ -213,16 +213,18 @@ inline void CustomElementReactionStack::ElementQueue::add(Element& element)
 inline void CustomElementReactionStack::ElementQueue::invokeAll()
 {
 #if !ASSERT_DISABLED
-    TemporaryChange<bool> invoking(m_invoking);
+    RELEASE_ASSERT(!m_invoking);
+    TemporaryChange<bool> invoking(m_invoking, true);
 #endif
     Vector<Ref<Element>> elements;
     elements.swap(m_elements);
+    RELEASE_ASSERT(m_elements.isEmpty());
     for (auto& element : elements) {
         auto* queue = element->reactionQueue();
         ASSERT(queue);
         queue->invokeAll(element.get());
     }
-    ASSERT(m_elements.isEmpty());
+    RELEASE_ASSERT(m_elements.isEmpty());
 }
 
 CustomElementReactionQueue& CustomElementReactionStack::ensureCurrentQueue(Element& element)
index fae6de8..0c9123d 100644 (file)
@@ -89,9 +89,7 @@ private:
 
     private:
         Vector<Ref<Element>> m_elements;
-#if !ASSERT_DISABLED
         bool m_invoking { false };
-#endif
     };
 
     WEBCORE_EXPORT void processQueue();