Put back breaks after return_user as Pat recommends and optimise a bit

git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/branches/UNSTABLE@1087 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
Luchezar Georgiev 2005-01-05 16:14:59 +00:00
parent 784e9b7ef5
commit 3d60c864e2
1 changed files with 13 additions and 8 deletions

View File

@ -244,12 +244,16 @@ int int21_fat32(lregs *r)
{ {
ULONG nfreeclst = xdffp->xdff_f.setdpbcounts.nfreeclst; ULONG nfreeclst = xdffp->xdff_f.setdpbcounts.nfreeclst;
ULONG cluster = xdffp->xdff_f.setdpbcounts.cluster; ULONG cluster = xdffp->xdff_f.setdpbcounts.cluster;
if (nfreeclst == 1 || cluster == 1)
return DE_INVLDPARM;
if (ISFAT32(dpb)) if (ISFAT32(dpb))
{ {
if ((dpb->dpb_xfsinfosec == 0xffff if ((dpb->dpb_xfsinfosec == 0xffff
&& (nfreeclst != 0 || cluster != 0)) && (nfreeclst != 0 || cluster != 0))
|| nfreeclst == 1 || nfreeclst > dpb->dpb_xsize || nfreeclst > dpb->dpb_xsize
|| cluster == 1 || cluster > dpb->dpb_xsize) || cluster > dpb->dpb_xsize)
{ {
return DE_INVLDPARM; return DE_INVLDPARM;
} }
@ -259,8 +263,8 @@ int int21_fat32(lregs *r)
} }
else else
{ {
if ((unsigned)nfreeclst == 1 || (unsigned)nfreeclst > dpb->dpb_size || if ((unsigned)nfreeclst > dpb->dpb_size ||
(unsigned)cluster == 1 || (unsigned)cluster > dpb->dpb_size) (unsigned)cluster > dpb->dpb_size)
{ {
return DE_INVLDPARM; return DE_INVLDPARM;
} }
@ -411,6 +415,9 @@ dispatch:
if ((lr.AH >= 0x38 && lr.AH <= 0x4F) || (lr.AH >= 0x56 && lr.AH <= 0x5c) || if ((lr.AH >= 0x38 && lr.AH <= 0x4F) || (lr.AH >= 0x56 && lr.AH <= 0x5c) ||
(lr.AH >= 0x5e && lr.AH <= 0x60) || (lr.AH >= 0x65 && lr.AH <= 0x6a) || (lr.AH >= 0x5e && lr.AH <= 0x60) || (lr.AH >= 0x65 && lr.AH <= 0x6a) ||
#ifdef WITHFAT32
lr.AH == 0x73 ||
#endif
lr.AH == 0x6c) lr.AH == 0x6c)
{ {
CLEAR_CARRY_FLAG(); CLEAR_CARRY_FLAG();
@ -751,6 +758,7 @@ dispatch:
return_code = lr.AL | 0x300; return_code = lr.AL | 0x300;
tsr = TRUE; tsr = TRUE;
return_user(); return_user();
break;
/* Get default BPB */ /* Get default BPB */
case 0x1f: case 0x1f:
@ -1026,6 +1034,7 @@ dispatch:
StartTrace(); StartTrace();
#endif #endif
return_user(); return_user();
break;
/* Get Child-program Return Value */ /* Get Child-program Return Value */
case 0x4d: case 0x4d:
@ -1442,8 +1451,6 @@ dispatch:
/* DOS 7.0+ FAT32 extended functions */ /* DOS 7.0+ FAT32 extended functions */
case 0x73: case 0x73:
CLEAR_CARRY_FLAG();
CritErrCode = SUCCESS;
rc = int21_fat32(&lr); rc = int21_fat32(&lr);
goto short_check; goto short_check;
#endif #endif
@ -1955,8 +1962,6 @@ VOID ASMCFUNC int2F_12_handler(struct int2f12regs r)
r.BX = FP_SEG(nul_dev.dh_next); r.BX = FP_SEG(nul_dev.dh_next);
r.AX = FP_OFF(nul_dev.dh_next); r.AX = FP_OFF(nul_dev.dh_next);
break;
case 0x2e: /* GET or SET error table addresse - ignored case 0x2e: /* GET or SET error table addresse - ignored
called by MS debug with DS != DOSDS, printf called by MS debug with DS != DOSDS, printf
doesn't work!! */ doesn't work!! */