22 lines
		
	
	
		
			673 B
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			22 lines
		
	
	
		
			673 B
		
	
	
	
		
			C#
		
	
	
	
	
	
| 
								 | 
							
								using System;
							 | 
						||
| 
								 | 
							
								using System.Runtime.Serialization;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace UnityEngine.UI.Tests.Utils
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    class ExceptionUtils
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        public static void PreserveStackTrace(Exception e)
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								            var ctx = new StreamingContext(StreamingContextStates.CrossAppDomain);
							 | 
						||
| 
								 | 
							
								            var mgr = new ObjectManager(null, ctx);
							 | 
						||
| 
								 | 
							
								            var si = new SerializationInfo(e.GetType(), new FormatterConverter());
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            e.GetObjectData(si, ctx);
							 | 
						||
| 
								 | 
							
								            mgr.RegisterObject(e, 1, si); // prepare for SetObjectData
							 | 
						||
| 
								 | 
							
								            mgr.DoFixups(); // ObjectManager calls SetObjectData
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // voila, e is unmodified save for _remoteStackTraceString
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								}
							 |