Bug 1275067: Flip logic in nsStyleCoord::ToLength, for safer general-case behavior. r?heycam
MozReview-Commit-ID: 7KYn5hv2Kmd
--- a/layout/style/nsStyleCoord.h
+++ b/layout/style/nsStyleCoord.h
@@ -181,21 +181,21 @@ public:
}
bool ConvertsToLength() const {
return ConvertsToLength(mUnit, mValue);
}
static nscoord ToLength(nsStyleUnit aUnit, nsStyleUnion aValue) {
MOZ_ASSERT(ConvertsToLength(aUnit, aValue));
- if (aUnit == eStyleUnit_Coord) {
- return aValue.mInt;
+ if (IsCalcUnit(aUnit)) {
+ return AsCalcValue(aValue)->ToLength(); // Note: This asserts !mHasPercent
}
- MOZ_ASSERT(IsCalcUnit(aUnit) && !AsCalcValue(aValue)->mHasPercent);
- return AsCalcValue(aValue)->ToLength();
+ MOZ_ASSERT(aUnit == eStyleUnit_Coord);
+ return aValue.mInt;
}
nscoord ToLength() const {
return ToLength(GetUnit(), mValue);
}
// Callers must verify IsCalcUnit before calling this function.
static Calc* AsCalcValue(nsStyleUnion aValue) {