Title: [94254] trunk/Source/_javascript_Core
Revision
94254
Author
[email protected]
Date
2011-08-31 17:21:20 -0700 (Wed, 31 Aug 2011)

Log Message

fast/regex/overflow.html asserts in debug builds
https://bugs.webkit.org/show_bug.cgi?id=67326

Reviewed by Gavin Barraclough.

The deliberate overflows in these expressions don't interact nicely
with Checked<32bit-type> so we just bump up to Checked<int64_t> for the
intermediate calculations.

* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
(JSC::Yarr::YarrGenerator::generateCharacterClassFixed):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (94253 => 94254)


--- trunk/Source/_javascript_Core/ChangeLog	2011-09-01 00:14:17 UTC (rev 94253)
+++ trunk/Source/_javascript_Core/ChangeLog	2011-09-01 00:21:20 UTC (rev 94254)
@@ -1,3 +1,18 @@
+2011-08-31  Oliver Hunt  <[email protected]>
+
+        fast/regex/overflow.html asserts in debug builds
+        https://bugs.webkit.org/show_bug.cgi?id=67326
+
+        Reviewed by Gavin Barraclough.
+
+        The deliberate overflows in these expressions don't interact nicely
+        with Checked<32bit-type> so we just bump up to Checked<int64_t> for the
+        intermediate calculations.
+
+        * yarr/YarrJIT.cpp:
+        (JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
+        (JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
+
 2011-08-31  Jeff Miller  <[email protected]>
 
         REGRESSION(92210): AVFoundation media engine is disabled on OS X

Modified: trunk/Source/_javascript_Core/yarr/YarrJIT.cpp (94253 => 94254)


--- trunk/Source/_javascript_Core/yarr/YarrJIT.cpp	2011-09-01 00:14:17 UTC (rev 94253)
+++ trunk/Source/_javascript_Core/yarr/YarrJIT.cpp	2011-09-01 00:21:20 UTC (rev 94254)
@@ -719,7 +719,7 @@
         sub32(Imm32(term->quantityCount.unsafeGet()), countRegister);
 
         Label loop(this);
-        BaseIndex address(input, countRegister, TimesTwo, ((term->inputPosition - m_checked + Checked<int>(term->quantityCount)) * static_cast<int>(sizeof(UChar))).unsafeGet());
+        BaseIndex address(input, countRegister, TimesTwo, (Checked<int>(term->inputPosition - m_checked + Checked<int64_t>(term->quantityCount)) * static_cast<int>(sizeof(UChar))).unsafeGet());
 
         if (m_pattern.m_ignoreCase && isASCIIAlpha(ch)) {
             load16(address, character);
@@ -873,7 +873,7 @@
 
         Label loop(this);
         JumpList matchDest;
-        load16(BaseIndex(input, countRegister, TimesTwo, ((term->inputPosition - m_checked + Checked<int>(term->quantityCount)) * static_cast<int>(sizeof(UChar))).unsafeGet()), character);
+        load16(BaseIndex(input, countRegister, TimesTwo, (Checked<int>(term->inputPosition - m_checked + Checked<int64_t>(term->quantityCount)) * static_cast<int>(sizeof(UChar))).unsafeGet()), character);
         matchCharacterClass(character, matchDest, term->characterClass);
 
         if (term->invert())
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to