Bug 1413666 - Fix off-by-one error in sticky positioning code. r?botond draft
authorKartikaya Gupta <kgupta@mozilla.com>
Wed, 01 Nov 2017 16:13:18 -0400
changeset 690267 1947aaffb3dd5a0fb6b6ed8eecb5dba4d431a137
parent 690034 cd7217cf05a2332a8fd7b498767a07b2c31ea657
child 738539 5306d8d692517e18a8001807af14e97e1c3c1e19
push id87262
push userkgupta@mozilla.com
push dateWed, 01 Nov 2017 20:13:49 +0000
reviewersbotond
bugs1413666
milestone58.0a1
Bug 1413666 - Fix off-by-one error in sticky positioning code. r?botond MozReview-Commit-ID: J33lrH03HyA
layout/generic/StickyScrollContainer.cpp
--- a/layout/generic/StickyScrollContainer.cpp
+++ b/layout/generic/StickyScrollContainer.cpp
@@ -280,28 +280,28 @@ StickyScrollContainer::GetScrollRanges(n
   ComputeStickyLimits(firstCont, &stick, &contain);
 
   aOuter->SetRect(nscoord_MIN/2, nscoord_MIN/2, nscoord_MAX, nscoord_MAX);
   aInner->SetRect(nscoord_MIN/2, nscoord_MIN/2, nscoord_MAX, nscoord_MAX);
 
   const nsPoint normalPosition = firstCont->GetNormalPosition();
 
   // Bottom and top
-  if (stick.YMost() != nscoord_MAX/2) {
+  if (stick.YMost() != (nscoord_MAX + (nscoord_MIN/2))) {
     aOuter->SetTopEdge(contain.y - stick.YMost());
     aInner->SetTopEdge(normalPosition.y - stick.YMost());
   }
 
   if (stick.y != nscoord_MIN/2) {
     aInner->SetBottomEdge(normalPosition.y - stick.y);
     aOuter->SetBottomEdge(contain.YMost() - stick.y);
   }
 
   // Right and left
-  if (stick.XMost() != nscoord_MAX/2) {
+  if (stick.XMost() != (nscoord_MAX + (nscoord_MIN/2))) {
     aOuter->SetLeftEdge(contain.x - stick.XMost());
     aInner->SetLeftEdge(normalPosition.x - stick.XMost());
   }
 
   if (stick.x != nscoord_MIN/2) {
     aInner->SetRightEdge(normalPosition.x - stick.x);
     aOuter->SetRightEdge(contain.XMost() - stick.x);
   }