[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

paroga at webkit.org paroga at webkit.org
Wed Dec 22 13:47:06 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 2f5535069b746626800a9b71e900675caaa0fe45
Author: paroga at webkit.org <paroga at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Sep 27 05:09:05 2010 +0000

    2010-09-26  Patrick Gansterer  <paroga at webkit.org>
    
            Reviewed by Adam Barth.
    
            REGRESSION (r68289): Assertion failure in StringHasher::addCharacter() (ch != invalidCharacterValue)
            running websocket/tests/bad-sub-protocol-non-ascii.html
            https://bugs.webkit.org/show_bug.cgi?id=46553
    
            Because we use StringHasher for binary data too, so the check for invalid unicode input is wrong.
            Add an additional member variable to indicate if we have an pending character
            instead of only using an invalid character for this purpose.
    
            * wtf/StringHashFunctions.h:
            (WTF::StringHasher::StringHasher):
            (WTF::StringHasher::addCharacters):
            (WTF::StringHasher::addCharacter):
            (WTF::StringHasher::hash):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@68368 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index f9b158a..6a9550e 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,21 @@
+2010-09-26  Patrick Gansterer  <paroga at webkit.org>
+
+        Reviewed by Adam Barth.
+
+        REGRESSION (r68289): Assertion failure in StringHasher::addCharacter() (ch != invalidCharacterValue)
+        running websocket/tests/bad-sub-protocol-non-ascii.html
+        https://bugs.webkit.org/show_bug.cgi?id=46553
+
+        Because we use StringHasher for binary data too, so the check for invalid unicode input is wrong.
+        Add an additional member variable to indicate if we have an pending character
+        instead of only using an invalid character for this purpose.
+
+        * wtf/StringHashFunctions.h:
+        (WTF::StringHasher::StringHasher):
+        (WTF::StringHasher::addCharacters):
+        (WTF::StringHasher::addCharacter):
+        (WTF::StringHasher::hash):
+
 2010-09-26  Mark Hahnenberg  <mhahnenb at gmail.com>
 
         Reviewed by Oliver Hunt.
diff --git a/JavaScriptCore/wtf/StringHashFunctions.h b/JavaScriptCore/wtf/StringHashFunctions.h
index 8350ea1..c5d8efd 100644
--- a/JavaScriptCore/wtf/StringHashFunctions.h
+++ b/JavaScriptCore/wtf/StringHashFunctions.h
@@ -35,26 +35,27 @@ class StringHasher {
 public:
     inline StringHasher()
         : m_hash(stringHashingStartValue)
-        , m_cachedCharacter(invalidCharacterValue)
+        , m_hasPendingCharacter(false)
+        , m_pendingCharacter(0)
     {
     }
 
     inline void addCharacters(UChar a, UChar b)
     {
-        ASSERT(m_cachedCharacter == invalidCharacterValue);
+        ASSERT(!m_hasPendingCharacter);
         addCharactersToHash(a, b);
     }
 
     inline void addCharacter(UChar ch)
     {
-        ASSERT(ch != invalidCharacterValue);
-        if (m_cachedCharacter != invalidCharacterValue) {
-            addCharactersToHash(m_cachedCharacter, ch);
-            m_cachedCharacter = invalidCharacterValue;
+        if (m_hasPendingCharacter) {
+            addCharactersToHash(m_pendingCharacter, ch);
+            m_hasPendingCharacter = false;
             return;
         }
 
-        m_cachedCharacter = ch;
+        m_pendingCharacter = ch;
+        m_hasPendingCharacter = true;
     }
 
     inline unsigned hash() const
@@ -62,8 +63,8 @@ public:
         unsigned result = m_hash;
 
         // Handle end case.
-        if (m_cachedCharacter != invalidCharacterValue) {
-            result += m_cachedCharacter;
+        if (m_hasPendingCharacter) {
+            result += m_pendingCharacter;
             result ^= result << 11;
             result += result >> 17;
         }
@@ -154,9 +155,8 @@ private:
     }
 
     unsigned m_hash;
-    UChar m_cachedCharacter;
-
-    static const UChar invalidCharacterValue = 0xfffe;
+    bool m_hasPendingCharacter;
+    UChar m_pendingCharacter;
 };
 
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list