From 9a33f3f40e71a1417fcab35781e32562936f62f6 Mon Sep 17 00:00:00 2001 From: Emil Sjolander Date: Fri, 14 Oct 2016 04:35:46 -0700 Subject: [PATCH] Don't assume a node with a measure function is a leaf node Reviewed By: gkassabli Differential Revision: D4021096 fbshipit-source-id: 7e039239b1697a0ac42dce9f4b7e252a931bad7e --- React/CSSLayout/CSSLayout.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/React/CSSLayout/CSSLayout.c b/React/CSSLayout/CSSLayout.c index 183cbaefd..e44429b7e 100644 --- a/React/CSSLayout/CSSLayout.c +++ b/React/CSSLayout/CSSLayout.c @@ -242,10 +242,9 @@ uint32_t CSSNodeChildCount(const CSSNodeRef node) { } void CSSNodeMarkDirty(const CSSNodeRef node) { - CSS_ASSERT(node->measure != NULL, - "Nodes without custom measure functions " - "should not manually mark themselves as " - "dirty"); + CSS_ASSERT(node->measure != NULL || CSSNodeChildCount(node) > 0, + "Only leaf nodes with custom measure functions" + "should manually mark themselves as dirty"); _CSSNodeMarkDirty(node); } @@ -966,7 +965,7 @@ static void layoutNodeImpl(const CSSNodeRef node, // For content (text) nodes, determine the dimensions based on the text // contents. - if (node->measure) { + if (node->measure && CSSNodeChildCount(node) == 0) { const float innerWidth = availableWidth - marginAxisRow - paddingAndBorderAxisRow; const float innerHeight = availableHeight - marginAxisColumn - paddingAndBorderAxisColumn; @@ -2100,7 +2099,7 @@ bool layoutNodeInternal(const CSSNodeRef node, // most // expensive to measure, so it's worth avoiding redundant measurements if at // all possible. - if (node->measure) { + if (node->measure && CSSNodeChildCount(node) == 0) { const float marginAxisRow = getMarginAxis(node, CSSFlexDirectionRow); const float marginAxisColumn = getMarginAxis(node, CSSFlexDirectionColumn);