Hi,

there's a problem with the recent FCB fix -- I was a little suspect
seeing the change.
After testing with the old GEM, it seems the problem is in FCBOpen: it
initializes too much, see also
http://www.drdos.com/dosdoc/sysprog/chap4.htm

After opening GEM does something like "mov cx,es:[007d]" for the
random i/o call and that value is lost (it was 3) from FCBOpen's init.

see the fix below

Bart
===================================================================
--- kernel/fcbfns.c     (revision 1379)
+++ kernel/fcbfns.c     (working copy)
@@ -253,7 +253,7 @@
   lpFcb = ExtFcbToFcb(lpXfcb);

   recsiz = lpFcb->fcb_recsiz;
-  bigsize = (ULONG)recsiz * (recno+1);
+  bigsize = (ULONG)recsiz * recno;
   if (bigsize > 0xffff)
     return FCB_ERR_SEGMENT_WRAP;
   size = (unsigned)bigsize;
@@ -417,8 +417,6 @@
   sftp->sft_mode |= O_FCB;

   lpFcb->fcb_sftno = sft_idx;
-  lpFcb->fcb_curec = 0;
-  lpFcb->fcb_rndm = 0;

   lpFcb->fcb_recsiz = 0;      /* true for devices   */
   if (!(sftp->sft_flags & SFT_FDEVICE)) /* check for a device */

------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables 
unlimited royalty-free distribution of the report engine 
for externally facing server and web deployment. 
http://p.sf.net/sfu/businessobjects
_______________________________________________
Freedos-kernel mailing list
Freedos-kernel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-kernel

Reply via email to