Skip to content

Commit 5af0f82

Browse files
authored
Merge pull request #65 from mixpanel/fix-NaN-Crash
Fix Android crash caused by invalid number being set as property value
2 parents 46e37b0 + 24c4b9c commit 5af0f82

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

android/src/main/java/com/mixpanel/reactnative/ReactNativeHelper.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,12 @@ public static JSONObject reactToJSON(ReadableMap value) throws JSONException {
4141
properties.put(key, value.getBoolean(key));
4242
break;
4343
case Number:
44-
properties.put(key, value.getDouble(key));
44+
double numberValue = value.getDouble(key);
45+
if (!Double.isNaN(numberValue) && !Double.isInfinite(numberValue)) {
46+
properties.put(key, numberValue);
47+
} else {
48+
properties.put(key, String.valueOf(numberValue));
49+
}
4550
break;
4651
case String:
4752
properties.put(key, value.getString(key));
@@ -77,7 +82,10 @@ public static JSONArray reactToJSON(ReadableArray value) throws JSONException {
7782
properties.put(value.getBoolean(i));
7883
break;
7984
case Number:
80-
properties.put(value.getDouble(i));
85+
double numberValue = value.getDouble(i);
86+
if (!Double.isNaN(numberValue) && !Double.isInfinite(numberValue)) {
87+
properties.put(numberValue);
88+
}
8189
break;
8290
case String:
8391
properties.put(value.getString(i));
@@ -133,7 +141,12 @@ public static Map<String, Object> toMap(ReadableMap value) {
133141
mapProperties.put(key, value.getBoolean(key));
134142
break;
135143
case Number:
136-
mapProperties.put(key, value.getDouble(key));
144+
double numberValue = value.getDouble(key);
145+
if (!Double.isNaN(numberValue) && !Double.isInfinite(numberValue)) {
146+
mapProperties.put(key, value.getDouble(key));
147+
} else {
148+
mapProperties.put(key, String.valueOf(numberValue));
149+
}
137150
break;
138151
case String:
139152
mapProperties.put(key, value.getString(key));

0 commit comments

Comments
 (0)