Title: [123536] trunk/Source/WebCore
Revision
123536
Author
k...@webkit.org
Date
2012-07-24 15:12:54 -0700 (Tue, 24 Jul 2012)

Log Message

Clear the external characters pointer of an AtomicHTMLToken before the raw token is cleared.
https://bugs.webkit.org/show_bug.cgi?id=92056

Reviewed by Adam Barth.

AtomicHTMLToken keeps a pointer to the HTMLToken's buffer instead of copying the
characters for performance. Clear the external characters pointer before the raw token
is cleared to make sure that we won't have a dangling pointer.

No new tests - no functional changes.

* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::constructTreeFromToken):
* xml/parser/MarkupTokenBase.h:
(WebCore::AtomicMarkupTokenBase::clearExternalCharacters):
(AtomicMarkupTokenBase):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (123535 => 123536)


--- trunk/Source/WebCore/ChangeLog	2012-07-24 22:08:52 UTC (rev 123535)
+++ trunk/Source/WebCore/ChangeLog	2012-07-24 22:12:54 UTC (rev 123536)
@@ -1,3 +1,22 @@
+2012-07-23  Kwang Yul Seo  <sk...@company100.net>
+
+        Clear the external characters pointer of an AtomicHTMLToken before the raw token is cleared.
+        https://bugs.webkit.org/show_bug.cgi?id=92056
+
+        Reviewed by Adam Barth.
+
+        AtomicHTMLToken keeps a pointer to the HTMLToken's buffer instead of copying the
+        characters for performance. Clear the external characters pointer before the raw token
+        is cleared to make sure that we won't have a dangling pointer.
+
+        No new tests - no functional changes.
+
+        * html/parser/HTMLTreeBuilder.cpp:
+        (WebCore::HTMLTreeBuilder::constructTreeFromToken):
+        * xml/parser/MarkupTokenBase.h:
+        (WebCore::AtomicMarkupTokenBase::clearExternalCharacters):
+        (AtomicMarkupTokenBase):
+
 2012-07-24  Jian Li  <jia...@chromium.org>
 
         Add per-context setting for html notifications

Modified: trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp (123535 => 123536)


--- trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp	2012-07-24 22:08:52 UTC (rev 123535)
+++ trunk/Source/WebCore/html/parser/HTMLTreeBuilder.cpp	2012-07-24 22:12:54 UTC (rev 123536)
@@ -451,6 +451,12 @@
 
     constructTreeFromAtomicToken(token.get());
 
+    // AtomicHTMLToken keeps a pointer to the HTMLToken's buffer instead
+    // of copying the characters for performance.
+    // Clear the external characters pointer before the raw token is cleared
+    // to make sure that we won't have a dangling pointer.
+    token->clearExternalCharacters();
+
     if (!rawToken.isUninitialized()) {
         ASSERT(rawToken.type() == HTMLTokenTypes::Character);
         rawToken.clear();

Modified: trunk/Source/WebCore/xml/parser/MarkupTokenBase.h (123535 => 123536)


--- trunk/Source/WebCore/xml/parser/MarkupTokenBase.h	2012-07-24 22:08:52 UTC (rev 123535)
+++ trunk/Source/WebCore/xml/parser/MarkupTokenBase.h	2012-07-24 22:12:54 UTC (rev 123536)
@@ -482,6 +482,12 @@
         return m_doctypeData->m_systemIdentifier;
     }
 
+    void clearExternalCharacters()
+    {
+        ASSERT(m_type == Token::Type::Character);
+        m_externalCharacters = 0;
+    }
+
 protected:
     typename Token::Type::Type m_type;
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to