Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Safar <marek.safar@gmail.com>2015-05-27 18:12:03 +0300
committerMarek Safar <marek.safar@gmail.com>2016-05-03 01:10:21 +0300
commita87d7a5b9851dc97a8d6fd281fa537fc07389dde (patch)
tree6cba46afb915806e214236127418d6f7d5083ff2 /mcs/class/referencesource/mscorlib/system/runtime
parent5acce6f89ccbf6560a9335ff8023e7d8e77a87d4 (diff)
Clone all levels of captures ExceptionDispatchInfos
Diffstat (limited to 'mcs/class/referencesource/mscorlib/system/runtime')
-rw-r--r--mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs8
1 files changed, 7 insertions, 1 deletions
diff --git a/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs b/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs
index b0e11af8e6f..395ea084097 100644
--- a/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs
+++ b/mcs/class/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs
@@ -43,7 +43,13 @@ namespace System.Runtime.ExceptionServices {
// Copy over the details we need to save.
m_Exception = exception;
#if MONO
- m_stackTrace = new System.Diagnostics.StackTrace [1] { new System.Diagnostics.StackTrace (exception, 0, true, true) };
+ var count = exception.captured_traces == null ? 0 : exception.captured_traces.Length;
+ var stack_traces = new System.Diagnostics.StackTrace [count + 1];
+ if (count != 0)
+ Array.Copy (exception.captured_traces, 0, stack_traces, 0, count);
+
+ stack_traces [count] = new System.Diagnostics.StackTrace (exception, 0, true, true);
+ m_stackTrace = stack_traces;
#else
m_remoteStackTrace = exception.RemoteStackTrace;