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);