From 6caf0993df551decc9658cb97f562dfd34ac2d9a Mon Sep 17 00:00:00 2001 From: Zihe Jia Date: Mon, 21 Jun 2021 12:29:21 -0700 Subject: [PATCH] fix crash caused by invalid number being set as property value --- .../reactnative/ReactNativeHelper.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/com/mixpanel/reactnative/ReactNativeHelper.java b/android/src/main/java/com/mixpanel/reactnative/ReactNativeHelper.java index 15a272b6..d0e53b1d 100644 --- a/android/src/main/java/com/mixpanel/reactnative/ReactNativeHelper.java +++ b/android/src/main/java/com/mixpanel/reactnative/ReactNativeHelper.java @@ -41,7 +41,12 @@ public static JSONObject reactToJSON(ReadableMap value) throws JSONException { properties.put(key, value.getBoolean(key)); break; case Number: - properties.put(key, value.getDouble(key)); + double numberValue = value.getDouble(key); + if (!Double.isNaN(numberValue) && !Double.isInfinite(numberValue)) { + properties.put(key, numberValue); + } else { + properties.put(key, String.valueOf(numberValue)); + } break; case String: properties.put(key, value.getString(key)); @@ -77,7 +82,10 @@ public static JSONArray reactToJSON(ReadableArray value) throws JSONException { properties.put(value.getBoolean(i)); break; case Number: - properties.put(value.getDouble(i)); + double numberValue = value.getDouble(i); + if (!Double.isNaN(numberValue) && !Double.isInfinite(numberValue)) { + properties.put(numberValue); + } break; case String: properties.put(value.getString(i)); @@ -133,7 +141,12 @@ public static Map toMap(ReadableMap value) { mapProperties.put(key, value.getBoolean(key)); break; case Number: - mapProperties.put(key, value.getDouble(key)); + double numberValue = value.getDouble(key); + if (!Double.isNaN(numberValue) && !Double.isInfinite(numberValue)) { + mapProperties.put(key, value.getDouble(key)); + } else { + mapProperties.put(key, String.valueOf(numberValue)); + } break; case String: mapProperties.put(key, value.getString(key));