Skip to content

Commit 8bdb3dc

Browse files
committed
chore: rewrite filtering algorithm to be more resilent to crashes
- use runtime type checks where possible without reducing perf - use only features of java 8 so our tests can pass
1 parent 618df2e commit 8bdb3dc

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

packages/core/android/src/main/java/io/sentry/react/RNSentryModuleImpl.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -868,18 +868,19 @@ protected void fetchNativeDeviceContexts(
868868
final @NotNull Map<String, Object> serialized =
869869
InternalSentrySdk.serializeScope(context, (SentryAndroidOptions) options, currentScope);
870870

871-
if (serialized.containsKey("breadcrumbs")) {
872-
final @Nullable var breadcrumbs = (List<Map<String, Object>>) serialized.get("breadcrumbs");
873-
if (breadcrumbs != null) {
874-
var filtered = new ArrayList<Map<String, Object>>();
875-
for (Map<String, Object> b : breadcrumbs) {
876-
if ("react-native".equals(b.getOrDefault("origin", ""))) {
877-
continue;
871+
final @Nullable Object serializedBreadcrumbs = serialized.get("breadcrumbs");
872+
if (serializedBreadcrumbs instanceof List) {
873+
final List<?> breadcrumbs = (List<?>) serializedBreadcrumbs;
874+
List<Map<?, ?>> filtered = new ArrayList<>();
875+
for (Object o : breadcrumbs) {
876+
if (o instanceof Map) {
877+
final Map<?, ?> breadcrumb = (Map<?, ?>) o;
878+
if (!"react-native".equals(breadcrumb.get("origin"))) {
879+
filtered.add(breadcrumb);
878880
}
879-
filtered.add(b);
880881
}
881-
serialized.put("breadcrumbs", filtered);
882882
}
883+
serialized.put("breadcrumbs", filtered);
883884
}
884885

885886
final @Nullable Object deviceContext = RNSentryMapConverter.convertToWritable(serialized);

0 commit comments

Comments
 (0)