msvc: add a workaround to fix backtrace (#4200)
							parent
							
								
									40fd924b15
								
							
						
					
					
						commit
						8c050eff07
					
				| 
						 | 
				
			
			@ -84,12 +84,14 @@ $if msvc {
 | 
			
		|||
	frames := int( C.CaptureStackBackTrace(skipframes + 1, 100, backtraces, 0) )
 | 
			
		||||
	for i:=0; i < frames; i++ {
 | 
			
		||||
		// fugly pointer arithmetics follows ...
 | 
			
		||||
		s := voidptr( u64(backtraces) + u64(i*sizeof(voidptr)) )
 | 
			
		||||
		symfa_ok := C.SymFromAddr( handle, s, &offset, si )
 | 
			
		||||
		// FIXME Remove temp variable
 | 
			
		||||
		tmp := u64(backtraces) + u64(i * sizeof(voidptr))
 | 
			
		||||
		s := &voidptr(tmp)
 | 
			
		||||
		symfa_ok := C.SymFromAddr( handle, *s, &offset, si )
 | 
			
		||||
		if symfa_ok == 1 {
 | 
			
		||||
			nframe := frames - i - 1
 | 
			
		||||
			mut lineinfo := ''
 | 
			
		||||
			symglfa_ok := C.SymGetLineFromAddr64(handle, s, &offset, &sline64)
 | 
			
		||||
			symglfa_ok := C.SymGetLineFromAddr64(handle, *s, &offset, &sline64)
 | 
			
		||||
			if symglfa_ok == 1 {
 | 
			
		||||
				lineinfo = ' ${sline64.f_file_name}:${sline64.f_line_number}'
 | 
			
		||||
			}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue