From 7318abd114a256c964aa3158a88a73a93c976cdb Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Thu, 21 Jul 2011 13:57:59 +0000 Subject: [PATCH] Add patch 3324624 from ano. Some fixes with respect to mixing normal and extended fcbs. Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3732 --- src/dos/dos_files.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/dos/dos_files.cpp b/src/dos/dos_files.cpp index 618e6e65..b9c8ae4e 100644 --- a/src/dos/dos_files.cpp +++ b/src/dos/dos_files.cpp @@ -924,7 +924,9 @@ bool DOS_FCBCreate(Bit16u seg,Bit16u offset) { DOS_FCB fcb(seg,offset); char shortname[DOS_FCBNAME];Bit16u handle; fcb.GetName(shortname); - if (!DOS_CreateFile(shortname,DOS_ATTR_ARCHIVE,&handle)) return false; + Bit8u attr = DOS_ATTR_ARCHIVE; + fcb.GetAttr(attr); + if (!DOS_CreateFile(shortname,attr,&handle)) return false; fcb.FileOpen((Bit8u)handle); return true; } @@ -1164,10 +1166,11 @@ bool DOS_FCBDeleteFile(Bit16u seg,Bit16u offset){ * stored. This can not be the tempdta as that one is used by fcbfindfirst */ RealPt old_dta=dos.dta();dos.dta(dos.tables.tempdta_fcbdelete); - DOS_FCB fcb(RealSeg(dos.dta()),RealOff(dos.dta())); + RealPt new_dta=dos.dta(); bool nextfile = false; bool return_value = false; nextfile = DOS_FCBFindFirst(seg,offset); + DOS_FCB fcb(RealSeg(new_dta),RealOff(new_dta)); while(nextfile) { char shortname[DOS_FCBNAME] = { 0 }; fcb.GetName(shortname);