summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/platform/geometry/layout_unit.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/platform/geometry/layout_unit.h')
-rw-r--r--chromium/third_party/blink/renderer/platform/geometry/layout_unit.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/chromium/third_party/blink/renderer/platform/geometry/layout_unit.h b/chromium/third_party/blink/renderer/platform/geometry/layout_unit.h
index eaaff017795..8ffe3e11501 100644
--- a/chromium/third_party/blink/renderer/platform/geometry/layout_unit.h
+++ b/chromium/third_party/blink/renderer/platform/geometry/layout_unit.h
@@ -723,7 +723,12 @@ inline float& operator/=(float& a, const LayoutUnit& b) {
inline int SnapSizeToPixel(LayoutUnit size, LayoutUnit location) {
LayoutUnit fraction = location.Fraction();
- return (fraction + size).Round() - fraction.Round();
+ int result = (fraction + size).Round() - fraction.Round();
+ if (UNLIKELY(result == 0 &&
+ std::abs(size.ToFloat()) > LayoutUnit::Epsilon() * 4)) {
+ return size > 0 ? 1 : -1;
+ }
+ return result;
}
inline int RoundToInt(LayoutUnit value) {