From a8a85034e1cc23a144e58a9fb3215afbaebedb19 Mon Sep 17 00:00:00 2001 From: Andrei Shikov Date: Wed, 4 Aug 2021 05:12:41 -0700 Subject: [PATCH] Check for negative `numberOfLines` in TextView Summary: Negative `numberOfLines` prop is not supported by Android and causes a crash during layout measurement. This change adds a check in JS to catch the error earlier. Changelog: [Internal] Reviewed By: GijsWeterings Differential Revision: D30047103 fbshipit-source-id: 4248a0f573c3b6facd25c7ae6ce007a357a1469b --- Libraries/Text/Text.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Libraries/Text/Text.js b/Libraries/Text/Text.js index 97ce10d0a20..52b063d5bc4 100644 --- a/Libraries/Text/Text.js +++ b/Libraries/Text/Text.js @@ -18,6 +18,7 @@ import {NativeText, NativeVirtualText} from './TextNativeComponent'; import {type TextProps} from './TextProps'; import * as React from 'react'; import {useContext, useMemo, useState} from 'react'; +import invariant from 'invariant'; /** * Text is the fundamental component for displaying text. @@ -148,6 +149,15 @@ const Text: React.AbstractComponent< } } + const numberOfLines = restProps.numberOfLines; + if (numberOfLines != null) { + invariant( + numberOfLines >= 0, + 'Number of lines in component can not be negative, passed value: %s.', + [numberOfLines], + ); + } + const hasTextAncestor = useContext(TextAncestor); return hasTextAncestor ? (