diff options
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.h | 7 |
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) { |