mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Cap selection indices when text changes (#26680)
Summary: This PR https://github.com/facebook/react-native/pull/22723 cached selections, so if you had a cached selection indicies, but updated the text to be an empty string, then this would crash. As reported in https://github.com/facebook/react-native/issues/25265 and other issues of `setSpan(4 ... 4) ends beyond length` ## Changelog [Android] [fixed] - Crash in TextInput Pull Request resolved: https://github.com/facebook/react-native/pull/26680 Test Plan: ``` input.setNativeProps({ text: "xxx", selection: {"begin": 0, "end": 3}}); input.setNativeProps({ text: ""}); ``` Differential Revision: D18189703 Pulled By: cpojer fbshipit-source-id: 67d9615a863fd22598be8d6d4553dec5ac8837ed
This commit is contained in:
committed by
Facebook Github Bot
parent
0bea6a9b19
commit
6ebd3b046e
+12
@@ -157,6 +157,18 @@ public class ReactTextInputShadowNode extends ReactBaseTextShadowNode
|
||||
@ReactProp(name = PROP_TEXT)
|
||||
public void setText(@Nullable String text) {
|
||||
mText = text;
|
||||
if (text != null) {
|
||||
// The selection shouldn't be bigger than the length of the text
|
||||
if (mSelectionStart > text.length()) {
|
||||
mSelectionStart = text.length();
|
||||
}
|
||||
if (mSelectionEnd > text.length()) {
|
||||
mSelectionEnd = text.length();
|
||||
}
|
||||
} else {
|
||||
mSelectionStart = UNSET;
|
||||
mSelectionEnd = UNSET;
|
||||
}
|
||||
markUpdated();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user