From: Marek Safar Date: Wed, 27 May 2015 15:12:03 +0000 (+0200) Subject: Clone all levels of captures ExceptionDispatchInfos X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=a87d7a5b9851dc97a8d6fd281fa537fc07389dde;p=mono.git Clone all levels of captures ExceptionDispatchInfos --- 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;