diff --git a/mozilla/content/html/style/src/nsCSSDeclaration.cpp b/mozilla/content/html/style/src/nsCSSDeclaration.cpp index a5e1bed0082..3d923b016e6 100644 --- a/mozilla/content/html/style/src/nsCSSDeclaration.cpp +++ b/mozilla/content/html/style/src/nsCSSDeclaration.cpp @@ -194,16 +194,27 @@ PRBool nsCSSDeclaration::AppendValueToString(nsCSSProperty aProperty, nsAString& } break; case eCSSType_Rect: { const nsCSSRect *rect = NS_STATIC_CAST(const nsCSSRect*, storage); - aResult.Append(NS_LITERAL_STRING("rect(")); - AppendCSSValueToString(aProperty, rect->mTop, aResult); - NS_NAMED_LITERAL_STRING(comma, ", "); - aResult.Append(comma); - AppendCSSValueToString(aProperty, rect->mRight, aResult); - aResult.Append(comma); - AppendCSSValueToString(aProperty, rect->mBottom, aResult); - aResult.Append(comma); - AppendCSSValueToString(aProperty, rect->mLeft, aResult); - aResult.Append(PRUnichar(')')); + if (rect->mTop.GetUnit() == eCSSUnit_Inherit || + rect->mTop.GetUnit() == eCSSUnit_Initial) { + NS_ASSERTION(rect->mRight.GetUnit() == rect->mTop.GetUnit(), + "Top inherit or initial, right isn't. Fix the parser!"); + NS_ASSERTION(rect->mBottom.GetUnit() == rect->mTop.GetUnit(), + "Top inherit or initial, bottom isn't. Fix the parser!"); + NS_ASSERTION(rect->mLeft.GetUnit() == rect->mTop.GetUnit(), + "Top inherit or initial, left isn't. Fix the parser!"); + AppendCSSValueToString(aProperty, rect->mTop, aResult); + } else { + aResult.Append(NS_LITERAL_STRING("rect(")); + AppendCSSValueToString(aProperty, rect->mTop, aResult); + NS_NAMED_LITERAL_STRING(comma, ", "); + aResult.Append(comma); + AppendCSSValueToString(aProperty, rect->mRight, aResult); + aResult.Append(comma); + AppendCSSValueToString(aProperty, rect->mBottom, aResult); + aResult.Append(comma); + AppendCSSValueToString(aProperty, rect->mLeft, aResult); + aResult.Append(PRUnichar(')')); + } } break; case eCSSType_ValueList: { const nsCSSValueList* val = diff --git a/mozilla/layout/style/nsCSSDeclaration.cpp b/mozilla/layout/style/nsCSSDeclaration.cpp index a5e1bed0082..3d923b016e6 100644 --- a/mozilla/layout/style/nsCSSDeclaration.cpp +++ b/mozilla/layout/style/nsCSSDeclaration.cpp @@ -194,16 +194,27 @@ PRBool nsCSSDeclaration::AppendValueToString(nsCSSProperty aProperty, nsAString& } break; case eCSSType_Rect: { const nsCSSRect *rect = NS_STATIC_CAST(const nsCSSRect*, storage); - aResult.Append(NS_LITERAL_STRING("rect(")); - AppendCSSValueToString(aProperty, rect->mTop, aResult); - NS_NAMED_LITERAL_STRING(comma, ", "); - aResult.Append(comma); - AppendCSSValueToString(aProperty, rect->mRight, aResult); - aResult.Append(comma); - AppendCSSValueToString(aProperty, rect->mBottom, aResult); - aResult.Append(comma); - AppendCSSValueToString(aProperty, rect->mLeft, aResult); - aResult.Append(PRUnichar(')')); + if (rect->mTop.GetUnit() == eCSSUnit_Inherit || + rect->mTop.GetUnit() == eCSSUnit_Initial) { + NS_ASSERTION(rect->mRight.GetUnit() == rect->mTop.GetUnit(), + "Top inherit or initial, right isn't. Fix the parser!"); + NS_ASSERTION(rect->mBottom.GetUnit() == rect->mTop.GetUnit(), + "Top inherit or initial, bottom isn't. Fix the parser!"); + NS_ASSERTION(rect->mLeft.GetUnit() == rect->mTop.GetUnit(), + "Top inherit or initial, left isn't. Fix the parser!"); + AppendCSSValueToString(aProperty, rect->mTop, aResult); + } else { + aResult.Append(NS_LITERAL_STRING("rect(")); + AppendCSSValueToString(aProperty, rect->mTop, aResult); + NS_NAMED_LITERAL_STRING(comma, ", "); + aResult.Append(comma); + AppendCSSValueToString(aProperty, rect->mRight, aResult); + aResult.Append(comma); + AppendCSSValueToString(aProperty, rect->mBottom, aResult); + aResult.Append(comma); + AppendCSSValueToString(aProperty, rect->mLeft, aResult); + aResult.Append(PRUnichar(')')); + } } break; case eCSSType_ValueList: { const nsCSSValueList* val =