@@ -337,7 +337,47 @@ pub fn process_error(
337
337
338
338
#[ cfg( windows) ]
339
339
fn status_to_string ( status : ExitStatus ) -> String {
340
- status. to_string ( )
340
+ use winapi:: um:: winnt:: * ;
341
+ use winapi:: shared:: minwindef:: DWORD ;
342
+
343
+ let mut base = status. to_string ( ) ;
344
+ let extra = match status. code ( ) . unwrap ( ) as DWORD {
345
+ STATUS_ACCESS_VIOLATION => "STATUS_ACCESS_VIOLATION" ,
346
+ STATUS_IN_PAGE_ERROR => "STATUS_IN_PAGE_ERROR" ,
347
+ STATUS_INVALID_HANDLE => "STATUS_INVALID_HANDLE" ,
348
+ STATUS_INVALID_PARAMETER => "STATUS_INVALID_PARAMETER" ,
349
+ STATUS_NO_MEMORY => "STATUS_NO_MEMORY" ,
350
+ STATUS_ILLEGAL_INSTRUCTION => "STATUS_ILLEGAL_INSTRUCTION" ,
351
+ STATUS_NONCONTINUABLE_EXCEPTION => "STATUS_NONCONTINUABLE_EXCEPTION" ,
352
+ STATUS_INVALID_DISPOSITION => "STATUS_INVALID_DISPOSITION" ,
353
+ STATUS_ARRAY_BOUNDS_EXCEEDED => "STATUS_ARRAY_BOUNDS_EXCEEDED" ,
354
+ STATUS_FLOAT_DENORMAL_OPERAND => "STATUS_FLOAT_DENORMAL_OPERAND" ,
355
+ STATUS_FLOAT_DIVIDE_BY_ZERO => "STATUS_FLOAT_DIVIDE_BY_ZERO" ,
356
+ STATUS_FLOAT_INEXACT_RESULT => "STATUS_FLOAT_INEXACT_RESULT" ,
357
+ STATUS_FLOAT_INVALID_OPERATION => "STATUS_FLOAT_INVALID_OPERATION" ,
358
+ STATUS_FLOAT_OVERFLOW => "STATUS_FLOAT_OVERFLOW" ,
359
+ STATUS_FLOAT_STACK_CHECK => "STATUS_FLOAT_STACK_CHECK" ,
360
+ STATUS_FLOAT_UNDERFLOW => "STATUS_FLOAT_UNDERFLOW" ,
361
+ STATUS_INTEGER_DIVIDE_BY_ZERO => "STATUS_INTEGER_DIVIDE_BY_ZERO" ,
362
+ STATUS_INTEGER_OVERFLOW => "STATUS_INTEGER_OVERFLOW" ,
363
+ STATUS_PRIVILEGED_INSTRUCTION => "STATUS_PRIVILEGED_INSTRUCTION" ,
364
+ STATUS_STACK_OVERFLOW => "STATUS_STACK_OVERFLOW" ,
365
+ STATUS_DLL_NOT_FOUND => "STATUS_DLL_NOT_FOUND" ,
366
+ STATUS_ORDINAL_NOT_FOUND => "STATUS_ORDINAL_NOT_FOUND" ,
367
+ STATUS_ENTRYPOINT_NOT_FOUND => "STATUS_ENTRYPOINT_NOT_FOUND" ,
368
+ STATUS_CONTROL_C_EXIT => "STATUS_CONTROL_C_EXIT" ,
369
+ STATUS_DLL_INIT_FAILED => "STATUS_DLL_INIT_FAILED" ,
370
+ STATUS_FLOAT_MULTIPLE_FAULTS => "STATUS_FLOAT_MULTIPLE_FAULTS" ,
371
+ STATUS_FLOAT_MULTIPLE_TRAPS => "STATUS_FLOAT_MULTIPLE_TRAPS" ,
372
+ STATUS_REG_NAT_CONSUMPTION => "STATUS_REG_NAT_CONSUMPTION" ,
373
+ STATUS_HEAP_CORRUPTION => "STATUS_HEAP_CORRUPTION" ,
374
+ STATUS_STACK_BUFFER_OVERRUN => "STATUS_STACK_BUFFER_OVERRUN" ,
375
+ STATUS_ASSERTION_FAILURE => "STATUS_ASSERTION_FAILURE" ,
376
+ _ => return base,
377
+ } ;
378
+ base. push_str ( ", " ) ;
379
+ base. push_str ( extra) ;
380
+ base
341
381
}
342
382
}
343
383
0 commit comments