Hi!

- code optimization: was forgotten to place lr.AL= after CritErrCode=.
- source cleanup: not all zeros was replaced by SUCCESS.
- shorten expressions and code: inline MK_FP instead defining extra
  variable. There are already present similar inlinings: for example, see
  ps_stack initialization at start of int21_service().
- small spaces cleanup.

--- Begin Message ---
diff -ruNp old/kernel/inthndlr.c new/kernel/inthndlr.c
--- old/kernel/inthndlr.c       2004-05-28 12:08:32.000000000 +0000
+++ new/kernel/inthndlr.c       2004-05-31 07:48:22.000000000 +0000
@@ -772,8 +772,8 @@ dispatch:
         if (media_check(dpb) < 0)
 #endif
         {
-          lr.AL = 0xff;
           CritErrCode = -DE_INVLDDRV;
+          lr.AL = 0xff;
           break;
         }
         lr.DS = FP_SEG(dpb);
@@ -961,14 +961,14 @@ dispatch:
 
       /* Allocate memory */
     case 0x48:
-      if ((rc = DosMemAlloc(lr.BX, mem_access_mode, &lr.AX, &lr.BX)) < 0)
+      if ((rc = DosMemAlloc(lr.BX, mem_access_mode, &lr.AX, &lr.BX)) < SUCCESS)
       {
         DosMemLargest(&lr.BX);
         if (DosMemCheck() != SUCCESS)
           panic("MCB chain corrupted");
         goto error_exit;
       }
-      lr.AX++;   /* DosMemAlloc() returns seg of MCB rather than data */
+      lr.AX++; /* DosMemAlloc() returns seg of MCB rather than data */
       break;
 
       /* Free memory */
@@ -983,17 +983,13 @@ dispatch:
 
       /* Set memory block size */
     case 0x4a:
-        if (DosMemCheck() != SUCCESS)
-          panic("before 4a: MCB chain corrupted");
-
-      if ((rc = DosMemChange(lr.ES, lr.BX, &lr.BX)) < 0)
+      if (DosMemCheck() != SUCCESS)
+        panic("before 4a: MCB chain corrupted");
+      if ((rc = DosMemChange(lr.ES, lr.BX, &lr.BX)) < SUCCESS)
       {
 #if 0
         if (cu_psp == lr.ES)
-        {
-          psp FAR *p = MK_FP(cu_psp, 0);
-          p->ps_size = lr.BX + cu_psp;
-        }
+          ((psp FAR*)MK_FP(cu_psp, 0))->ps_size = lr.BX + cu_psp;
 #endif
         if (DosMemCheck() != SUCCESS)
           panic("after 4a: MCB chain corrupted");
@@ -1035,7 +1031,7 @@ dispatch:
       StartTrace();
 #endif
       return_user();
-      break;
+      /* never return */
 
       /* Get Child-program Return Value                               */
     case 0x4d:
@@ -1103,13 +1099,13 @@ dispatch:
       switch (lr.AL)
       {
         case 0x00:
-          rc = DosGetFtime((COUNT) lr.BX,       /* Handle               */
-                           &lr.DX,        /* FileDate             */
-                           &lr.CX);       /* FileTime             */
+          rc = DosGetFtime(lr.BX,               /* Handle               */
+                           &lr.DX,              /* FileDate             */
+                           &lr.CX);             /* FileTime             */
           break;
 
         case 0x01:
-          rc = DosSetFtime((COUNT) lr.BX,       /* Handle               */
+          rc = DosSetFtime(lr.BX,               /* Handle               */
                            (date) lr.DX,        /* FileDate             */
                            (time) lr.CX);       /* FileTime             */
           break;
@@ -1180,9 +1176,8 @@ dispatch:
 /* /// Added for SHARE.  - Ron Cemer */
       /* Lock/unlock file access */
     case 0x5c:
-      rc = DosLockUnlock
-           (lr.BX, ((unsigned long)lr.CX << 16) | lr.DX,
-                   ((unsigned long)lr.SI << 16) | lr.DI, lr.AL != 0);
+      rc = DosLockUnlock(lr.BX, ((ULONG)lr.CX << 16) | lr.DX,
+                                ((ULONG)lr.SI << 16) | lr.DI, lr.AL ? 1 : 0);
       if (rc != SUCCESS)
         goto error_exit;
       break;
@@ -1342,8 +1337,9 @@ dispatch:
           lr.AX = DosYesNo(lr.DL);
           break;
         default:
+          rc = DosGetData(lr.AL, lr.BX, lr.DX, lr.CX, FP_ES_DI);
 #ifdef NLS_DEBUG
-          if ((rc = DosGetData(lr.AL, lr.BX, lr.DX, lr.CX, FP_ES_DI)) < 0)
+          if (rc < SUCCESS)
           {
             printf("DosGetData() := %d\n", rc);
             goto error_exit;
@@ -1351,7 +1347,6 @@ dispatch:
           printf("DosGetData() returned successfully\n");
           break;
 #else
-          rc = DosGetData(lr.AL, lr.BX, lr.DX, lr.CX, FP_ES_DI);
           goto short_check;
 #endif
       }
@@ -1388,9 +1383,9 @@ dispatch:
 
       /* Get/Set Serial Number */
     case 0x69:
-      rc = (lr.BL == 0 ? default_drive : lr.BL - 1);
       if (lr.AL < 2)
       {
+        rc = (lr.BL == 0 ? default_drive : lr.BL - 1);
         if (get_cds(rc) == NULL)
         {
           rc = DE_INVLDDRV;

--- End Message ---

Reply via email to