Hi all, this one fixes some stupid int21 file function error return bugs that caused IDA/DOS to quit with "Can't close file: error 0". (We checked SET_AX return value to decide whether an error occurred or not - unfortunately the *HIWORD* of EAX was non-NULL ;-\) Index: msdos/int21.c =================================================================== RCS file: /home/wine/wine/msdos/int21.c,v retrieving revision 1.77 diff -u -r1.77 int21.c --- msdos/int21.c 21 Nov 2002 00:02:10 -0000 1.77 +++ msdos/int21.c 27 Nov 2002 21:03:45 -0000 @@ -1505,7 +1505,8 @@ case 0x3e: /* "CLOSE" - CLOSE FILE */ TRACE("CLOSE handle %d\n",BX_reg(context)); - bSetDOSExtendedError = ((SET_AX( context, _lclose16( BX_reg(context) )) != 0) ); + SET_AX( context, _lclose16( BX_reg(context) )); + bSetDOSExtendedError = ((AX_reg(context) & 0xffff) != 0); break; case 0x3f: /* "READ" - READ FROM FILE OR DEVICE */ @@ -1930,9 +1931,10 @@ case 0x5b: /* CREATE NEW FILE */ TRACE("CREATE NEW FILE 0x%02x for %s\n", CX_reg(context), (LPCSTR)CTX_SEG_OFF_TO_LIN(context, context->SegDs, context->Edx)); - bSetDOSExtendedError = ((SET_AX( context, + SET_AX( context, _lcreat16_uniq( CTX_SEG_OFF_TO_LIN(context, context->SegDs,context->Edx), - CX_reg(context) ))) == (WORD)HFILE_ERROR16); + CX_reg(context) )); + bSetDOSExtendedError = ((AX_reg(context) & 0xffff) != 0); break; case 0x5d: /* NETWORK */ -- Andreas Mohr Stauferstr. 6, D-71272 Renningen, Germany