JSStackTrace -> Ensure lineNumber exists before consuming (#24399)

Summary:
Fixes https://github.com/facebook/react-native/issues/24382

[ANDROID] [INTERNAL] - Fixed a `NoSuchKeyException` when parsing JS stack frames without line numbers.
Pull Request resolved: https://github.com/facebook/react-native/pull/24399

Differential Revision: D14890746

Pulled By: cpojer

fbshipit-source-id: cea3653076484ad624084c370439f8a39c303083
This commit is contained in:
Mike Diarmid 2019-04-11 03:11:24 -07:00 коммит произвёл Facebook Github Bot
Родитель 3b1760d1d1
Коммит c953e0b431
1 изменённых файлов: 13 добавлений и 2 удалений

Просмотреть файл

@ -24,8 +24,18 @@ public class JSStackTrace {
stringBuilder stringBuilder
.append(frame.getString("methodName")) .append(frame.getString("methodName"))
.append("@") .append("@")
.append(parseFileId(frame)) .append(parseFileId(frame));
if (frame.hasKey("lineNumber") &&
!frame.isNull("lineNumber") &&
frame.getType("lineNumber") == ReadableType.Number) {
stringBuilder
.append(frame.getInt("lineNumber")); .append(frame.getInt("lineNumber"));
} else {
stringBuilder
.append(-1);
}
if (frame.hasKey("column") && if (frame.hasKey("column") &&
!frame.isNull("column") && !frame.isNull("column") &&
frame.getType("column") == ReadableType.Number) { frame.getType("column") == ReadableType.Number) {
@ -33,6 +43,7 @@ public class JSStackTrace {
.append(":") .append(":")
.append(frame.getInt("column")); .append(frame.getInt("column"));
} }
stringBuilder.append("\n"); stringBuilder.append("\n");
} }
return stringBuilder.toString(); return stringBuilder.toString();