chain: Extra comments; shrink the new space to minimum
authorGene Cumm <gene.cumm@gmail.com>
Sun, 1 Aug 2010 16:55:27 +0000 (12:55 -0400)
committerGene Cumm <gene.cumm@gmail.com>
Sun, 1 Aug 2010 17:02:35 +0000 (13:02 -0400)
com32/modules/chain.c

index 15c181c..6a5b115 100644 (file)
@@ -1705,12 +1705,12 @@ int main(int argc, char *argv[])
        }
 
        if (opt.drmk) {
-           /* DRMK entry is different */
+           /* DRMK entry is different than MS-DOS/PC-DOS */
            /*
-            * A new size, aligned to 16 bytes, with one full extra row to
-            * guarantee the needed space and ease other values.
+            * A new size, aligned to 16 bytes to ease use of ds:[bp+28].
+            * We only really need 4 new, usable bytes at the end.
             */
-           int tsize = (data[ndata].size + 31) & 0xfffffff0;
+           int tsize = (data[ndata].size + 19) & 0xfffffff0;
            regs.ss = regs.fs = regs.gs = 0;    /* Used before initialized */
            if (!realloc(data[ndata].data, tsize)) {
                error("Failed to realloc for DRMK\n");
@@ -1719,7 +1719,7 @@ int main(int argc, char *argv[])
            data[ndata].size = tsize;
            /* ds:[bp+28] must be 0x0000003f */
            regs.ds = (tsize >> 4) + (opt.seg - 2);
-           /* "Patch" into the extra row */
+           /* "Patch" into tail of the new space */
            *(int *)(data[ndata].data + tsize - 4) = 0x0000003f;
        }