SL bot is hitting SHOULD NEVER BE REACHED in WebCore::valueForLength() on many tests
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Mar 2012 23:41:42 +0000 (23:41 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 28 Mar 2012 23:41:42 +0000 (23:41 +0000)
https://bugs.webkit.org/show_bug.cgi?id=82390

Patch by Joe Thomas <joethomas@motorola.com> on 2012-03-28
Reviewed by Simon Fraser.

This is an attempt to fix the MAC SL/Lion Bot issue as this issue is not reproducible locally.
The assertion happened when length type is Undefined in valueForLength() function but the assertion for Undefined length type
in RenderBox::computeLogicalWidthInRegionUsing which calls the above said function did not get hit.

This patch passes Length structure as const reference to Length calculation functions which avoids the call to the copy-constructor.
And it ensures that the Length structure is not getting modified during copy-construction.

* css/LengthFunctions.cpp:
(WebCore::minimumValueForLength):
(WebCore::valueForLength):
(WebCore::floatValueForLength):
* css/LengthFunctions.h:
(WebCore):

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

Source/WebCore/ChangeLog
Source/WebCore/css/LengthFunctions.cpp
Source/WebCore/css/LengthFunctions.h

index 92a56db..59b6ead 100644 (file)
@@ -1,3 +1,24 @@
+2012-03-28  Joe Thomas  <joethomas@motorola.com>
+
+        SL bot is hitting SHOULD NEVER BE REACHED in WebCore::valueForLength() on many tests
+        https://bugs.webkit.org/show_bug.cgi?id=82390
+
+        Reviewed by Simon Fraser.
+
+        This is an attempt to fix the MAC SL/Lion Bot issue as this issue is not reproducible locally.
+        The assertion happened when length type is Undefined in valueForLength() function but the assertion for Undefined length type
+        in RenderBox::computeLogicalWidthInRegionUsing which calls the above said function did not get hit.
+
+        This patch passes Length structure as const reference to Length calculation functions which avoids the call to the copy-constructor.
+        And it ensures that the Length structure is not getting modified during copy-construction. 
+
+        * css/LengthFunctions.cpp:
+        (WebCore::minimumValueForLength):
+        (WebCore::valueForLength):
+        (WebCore::floatValueForLength):
+        * css/LengthFunctions.h:
+        (WebCore):
+
 2012-03-28  Gavin Barraclough  <barraclough@apple.com>
 
         Yarr: if we're not using the output array, don't populate it!
index c3c0c9f..a9364be 100644 (file)
@@ -29,7 +29,7 @@
 
 namespace WebCore {
 
-int minimumValueForLength(Length length, int maximumValue, RenderView* renderView, bool roundPercentages)
+int minimumValueForLength(const Length& length, int maximumValue, RenderView* renderView, bool roundPercentages)
 {
     switch (length.type()) {
     case Fixed:
@@ -68,7 +68,7 @@ int minimumValueForLength(Length length, int maximumValue, RenderView* renderVie
     return 0;
 }
 
-int valueForLength(Length length, int maximumValue, RenderView* renderView, bool roundPercentages)
+int valueForLength(const Length& length, int maximumValue, RenderView* renderView, bool roundPercentages)
 {
     switch (length.type()) {
     case Fixed:
@@ -96,7 +96,7 @@ int valueForLength(Length length, int maximumValue, RenderView* renderView, bool
 }
 
 // FIXME: when subpixel layout is supported this copy of floatValueForLength() can be removed. See bug 71143.
-float floatValueForLength(Length length, int maximumValue, RenderView* renderView)
+float floatValueForLength(const Length& length, int maximumValue, RenderView* renderView)
 {
     switch (length.type()) {
     case Fixed:
@@ -132,7 +132,7 @@ float floatValueForLength(Length length, int maximumValue, RenderView* renderVie
     return 0;
 }
 
-float floatValueForLength(Length length, float maximumValue, RenderView* renderView)
+float floatValueForLength(const Length& length, float maximumValue, RenderView* renderView)
 {
     switch (length.type()) {
     case Fixed:
index 3106561..e782c15 100644 (file)
@@ -29,10 +29,10 @@ namespace WebCore {
 class RenderView;
 struct Length;
 
-int minimumValueForLength(Length, int maximumValue, RenderView* = 0, bool roundPercentages = false);
-int valueForLength(Length, int maximumValue, RenderView* = 0, bool roundPercentages = false);
-float floatValueForLength(Length, int maximumValue, RenderView* = 0);
-float floatValueForLength(Length, float maximumValue, RenderView* = 0);
+int minimumValueForLength(const Length&, int maximumValue, RenderView* = 0, bool roundPercentages = false);
+int valueForLength(const Length&, int maximumValue, RenderView* = 0, bool roundPercentages = false);
+float floatValueForLength(const Length&, int maximumValue, RenderView* = 0);
+float floatValueForLength(const Length&, float maximumValue, RenderView* = 0);
 
 } // namespace WebCore