From 9cdaedfcb55ca9ebcb9d58bbc10ed683b4e2f210 Mon Sep 17 00:00:00 2001 From: Georgiy Kassabli Date: Mon, 15 May 2017 08:39:56 -0700 Subject: [PATCH] Correct YGNodeCanUseCachedMeasurement to account for non-existent scale factor Summary: When config was added to YGNodeCanUseCachedMeasurement we didn't account for default 0 scale factor. This diff fixes that Reviewed By: emilsjolander Differential Revision: D5061016 fbshipit-source-id: 907ef987bd0ead29cf02f6945a3f03d4ffb58a2e --- yoga/Yoga.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/yoga/Yoga.c b/yoga/Yoga.c index e5fd5f79..df48f9da 100644 --- a/yoga/Yoga.c +++ b/yoga/Yoga.c @@ -3164,10 +3164,11 @@ bool YGNodeCanUseCachedMeasurement(const YGMeasureMode widthMode, if (lastComputedHeight < 0 || lastComputedWidth < 0) { return false; } - const float effectiveWidth = config != NULL ? YGRoundValueToPixelGrid(width, config->pointScaleFactor, false, false) : width; - const float effectiveHeight = config != NULL ? YGRoundValueToPixelGrid(height, config->pointScaleFactor, false, false) : height; - const float effectiveLastWidth = config != NULL ? YGRoundValueToPixelGrid(lastWidth, config->pointScaleFactor, false, false) : lastWidth; - const float effectiveLastHeight = config != NULL ? YGRoundValueToPixelGrid(lastHeight, config->pointScaleFactor, false, false) : lastHeight; + bool useRoundedComparison = config != NULL && config->pointScaleFactor != 0; + const float effectiveWidth = useRoundedComparison ? YGRoundValueToPixelGrid(width, config->pointScaleFactor, false, false) : width; + const float effectiveHeight = useRoundedComparison ? YGRoundValueToPixelGrid(height, config->pointScaleFactor, false, false) : height; + const float effectiveLastWidth = useRoundedComparison ? YGRoundValueToPixelGrid(lastWidth, config->pointScaleFactor, false, false) : lastWidth; + const float effectiveLastHeight = useRoundedComparison ? YGRoundValueToPixelGrid(lastHeight, config->pointScaleFactor, false, false) : lastHeight; const bool hasSameWidthSpec = lastWidthMode == widthMode && YGFloatsEqual(effectiveLastWidth, effectiveWidth); const bool hasSameHeightSpec = lastHeightMode == heightMode && YGFloatsEqual(effectiveLastHeight, effectiveHeight);