windows.errors: streamline error handling and throwing

master
Alexander Iljin 2016-06-29 01:55:15 +03:00 committed by John Benediktsson
parent 3733b13daf
commit 049356574a
2 changed files with 8 additions and 12 deletions

View File

@ -1 +1,2 @@
Doug Coleman Doug Coleman
Alexander Ilin

View File

@ -719,23 +719,18 @@ CONSTANT: FORMAT_MESSAGE_MAX_WIDTH_MASK 0x000000FF
ERROR: windows-error n string ; ERROR: windows-error n string ;
: (win32-error) ( n -- ) : throw-windows-error ( n -- * )
[ dup win32-error-string windows-error ] unless-zero ; dup n>win32-error-string windows-error ;
: win32-error ( -- ) : n>win32-error-check ( n -- )
GetLastError (win32-error) ; [ throw-windows-error ] unless-zero ;
! Note that win32-error* words throw GetLastError code.
: win32-error ( -- ) GetLastError n>win32-error-check ;
: win32-error=0/f ( n -- ) { 0 f } member? [ win32-error ] when ; : win32-error=0/f ( n -- ) { 0 f } member? [ win32-error ] when ;
: win32-error>0 ( n -- ) 0 > [ win32-error ] when ; : win32-error>0 ( n -- ) 0 > [ win32-error ] when ;
: win32-error<0 ( n -- ) 0 < [ win32-error ] when ; : win32-error<0 ( n -- ) 0 < [ win32-error ] when ;
: win32-error<>0 ( n -- ) zero? [ win32-error ] unless ; : win32-error<>0 ( n -- ) [ win32-error ] unless-zero ;
: n>win32-error-check ( n -- )
dup ERROR_SUCCESS = [
drop
] [
dup n>win32-error-string windows-error
] if ;
: check-invalid-handle ( handle -- handle ) : check-invalid-handle ( handle -- handle )
dup INVALID_HANDLE_VALUE = [ win32-error ] when ; dup INVALID_HANDLE_VALUE = [ win32-error ] when ;