diff --git a/src/Bugsnag/Middleware.cs b/src/Bugsnag/Middleware.cs index 4801132..ca20cad 100644 --- a/src/Bugsnag/Middleware.cs +++ b/src/Bugsnag/Middleware.cs @@ -78,14 +78,17 @@ public static class InternalMiddleware { foreach (var stackTraceLine in exception.StackTrace) { - foreach (var @namespace in report.Configuration.ProjectNamespaces) + if (!Polyfills.String.IsNullOrWhiteSpace(stackTraceLine.MethodName)) { - if (stackTraceLine.MethodName.StartsWith(@namespace)) + foreach (var @namespace in report.Configuration.ProjectNamespaces) { - stackTraceLine.InProject = true; - break; + if (stackTraceLine.MethodName.StartsWith(@namespace)) + { + stackTraceLine.InProject = true; + break; + } } - } + } } } } diff --git a/src/Bugsnag/Payload/StackTraceLine.cs b/src/Bugsnag/Payload/StackTraceLine.cs index 9b8cb27..486b6b9 100644 --- a/src/Bugsnag/Payload/StackTraceLine.cs +++ b/src/Bugsnag/Payload/StackTraceLine.cs @@ -53,7 +53,7 @@ public IEnumerator GetEnumerator() { // if the exception has not come from a stack trace then we need to // skip the frames that originate from inside the notifier code base - var currentStackFrameIsNotify = stackFrame.MethodName.StartsWith("Bugsnag.Client.Notify"); + var currentStackFrameIsNotify = !Polyfills.String.IsNullOrWhiteSpace(stackFrame.MethodName) && stackFrame.MethodName.StartsWith("Bugsnag.Client.Notify"); seenBugsnagFrames = seenBugsnagFrames || currentStackFrameIsNotify; if (!seenBugsnagFrames || currentStackFrameIsNotify) { diff --git a/tests/Bugsnag.Tests/MiddlewareTests.cs b/tests/Bugsnag.Tests/MiddlewareTests.cs index f97753b..bd875d5 100644 --- a/tests/Bugsnag.Tests/MiddlewareTests.cs +++ b/tests/Bugsnag.Tests/MiddlewareTests.cs @@ -157,6 +157,14 @@ public static IEnumerable InProjectTestData() ShouldBeMarkedAsInProject = true } } }; + yield return new object[] { + new string[] { "Bugsnag.Code", "Bugsnag.Assets" }, + new StackTraceInProjectTestCase[] { + new StackTraceInProjectTestCase { + MethodName = null, + ShouldBeMarkedAsInProject = false } + } + }; } } }