diff --git a/src/dos/dos_files.cpp b/src/dos/dos_files.cpp index 4f3f4ab1..ec7b5010 100644 --- a/src/dos/dos_files.cpp +++ b/src/dos/dos_files.cpp @@ -342,6 +342,20 @@ bool DOS_OpenFile(char * name,Bit8u flags,Bit16u * entry) { } else { /* First check if the name is correct */ if (!DOS_MakeName(name,fullname,&drive)) return false; + + /* Check, if file is already opened */ + for (i=0;iIsOpen() && Files[i]->IsName(fullname)) { + *entry = psp.FindEntryByHandle(i); + if (*entry==0xFF) { + // This shouldnt happen + LOG_ERROR("DOS: File %s is opened but has no psp entry.",name); + return false; + } + return true; + } + } + /* Check for a free file handle */ for (i=0;i