Index: src/index.cpp
===================================================================
--- src/index.cpp	(revision 3259)
+++ src/index.cpp	(working copy)
@@ -49,36 +49,7 @@
     SORT_deleted, SORT_eventdate, SORT_variations, SORT_comments, SORT_random, SORT_sentinel
 };
 
-#ifdef _WIN32 // Fast file read
 
-struct Index::WinFileMapping {
-    Index& index;
-    MFile* fp;
-	 uint pos;
-
-    WinFileMapping(Index& i, char const* fname) :index(i), fp(i.FilePtr), pos(i.FilePos) {
-        index.FilePtr = new MFile;
-
-        if (index.FilePtr->OpenMappedFile(fname, FMODE_ReadOnly) != OK) {
-            delete index.FilePtr;
-            index.FilePtr = fp; // use original handle in case of an error
-        } else {
-            index.FilePos = 0;
-        }
-    }
-
-    ~WinFileMapping()
-    {
-        if (index.FilePtr != fp) {
-            delete index.FilePtr;
-            index.FilePtr = fp;
-            index.FilePos = pos;
-        }
-    }
-};
-
-#endif
-
 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 // IndexEntry::Init():
 //        Initialise a single index entry.
@@ -1127,17 +1098,7 @@
         if (gamesToRead > INDEX_ENTRY_CHUNKSIZE) {
             gamesToRead = INDEX_ENTRY_CHUNKSIZE;
         }
-
-#ifdef _WIN32 // Fast file read
-        { Index::WinFileMapping fileMapping(*this, FilePtr->GetFileName());
-#endif
-
         err = ReadEntries (Entries[chunkCount], readCount, gamesToRead);
-
-#ifdef _WIN32 // Fast file read
-        }
-#endif
-
         if (err != OK) {
             for (uint i = 0; i <= chunkCount; i++) {
                 delete[] Entries[i];
Index: src/index.h
===================================================================
--- src/index.h	(revision 3259)
+++ src/index.h	(working copy)
@@ -619,6 +619,7 @@
     uint         IndexEntrySize;
 
     // Used for sorting:
+    uint *        EntriesHeap;
     int           SortCriteria [INDEX_MaxSortCriteria];
 
     void         FreeEntries();
@@ -630,7 +631,6 @@
     //  Index:  Public Functions
     //----------------------------------
  public:
-    uint *        EntriesHeap;
     Index()     { Init(); }
     ~Index()    { Clear(); }
 
@@ -727,11 +727,6 @@
      errorT     WriteSorted () { return WriteSorted (0, NULL, NULL); }
 
      errorT     ParseSortCriteria (const char * inputStr);
-
-#ifdef _WIN32 // Fast file read
-    class WinFileMapping;
-    friend class WinFileMapping;
-#endif
 };
 
 
Index: src/mfile.cpp
===================================================================
--- src/mfile.cpp	(revision 3259)
+++ src/mfile.cpp	(working copy)
@@ -33,9 +33,6 @@
     CurrentPtr = NULL;
     FileBuffer = NULL;
     FileName = NULL;
-#ifdef _WIN32
-    MappedFile = NULL;
-#endif
 }
 
 void
@@ -52,7 +49,7 @@
     if (oldData != NULL) {
       // Copy data to new array:
       for (uint i=0; i < oldCapacity; i++) {
-        Data[i] = oldData[i];
+	Data[i] = oldData[i];
       }
       delete[] oldData;
     }
@@ -87,10 +84,6 @@
     if (Type == MFILE_GZIP) {
         result = gzseek (GzHandle, position, 0);
         GzBuffer_Avail = 0;
-#ifdef _WIN32
-    } else if (Type == MFILE_MMAP) {
-        result = 0; // always succeeding
-#endif
     } else {
         result = fseek (Handle, position, 0);
     }
@@ -144,24 +137,7 @@
     return OK;
 }
 
-#ifdef _WIN32
 errorT
-MFile::OpenMappedFile (const char * name, fileModeT fmode)
-{
-    ASSERT(Handle == NULL && GzHandle == NULL);
-    ASSERT(fmode == FMODE_ReadOnly);
-
-    Type = MFILE_MMAP;
-    FileName = strDuplicate(name);
-    MappedFile = new WinMMap(name);
-    FileMode = fmode;
-    Location = 0;
-
-    return MappedFile->isOpen() ? OK : ERROR_FileOpen;
-}
-#endif
-
-errorT
 MFile::Create (const char * name, fileModeT fmode)
 {
     ASSERT (Handle == NULL  &&  GzHandle == NULL);
@@ -196,11 +172,6 @@
             GzBuffer_Avail = 0;
         }
         result = gzclose (GzHandle);
-#ifdef _WIN32
-    } else if (Type == MFILE_MMAP) {
-        delete MappedFile;
-        MappedFile = NULL;
-#endif
     } else {
         result = fclose (Handle);
     }
Index: src/mfile.h
===================================================================
--- src/mfile.h	(revision 3259)
+++ src/mfile.h	(working copy)
@@ -19,16 +19,7 @@
 // and will hopefully in future also be able to extract the contents of
 // all files in a Zip file, as if they were in one large plain file.
 
-// -------------------------------------------------------------------
-// Extension by Gregor Cramer, 25 March 2014:
-// -------------------------------------------------------------------
-// For reading a whole file and avoiding the time consuming locking we
-// are using memory mapping (file mapping) under Windows.
-//
-// On Linux we have a simpler method, glibc is providing the function
-// getc_unlocked() for this purpose.
 
-
 #ifndef SCID_MFILE_H
 #define SCID_MFILE_H
 
@@ -36,15 +27,8 @@
 #include "dstring.h"
 #include "error.h"
 
-#ifdef _WIN32
-# include "win_mmap.h"
-#endif
-
 enum mfileT {
-    MFILE_REGULAR = 0, MFILE_MEMORY, MFILE_GZIP, MFILE_ZIP,
-#ifdef _WIN32
-    MFILE_MMAP,
-#endif
+    MFILE_REGULAR = 0, MFILE_MEMORY, MFILE_GZIP, MFILE_ZIP
 };
 
 class MFile
@@ -71,10 +55,6 @@
 
     char *      FileBuffer;  // Only for files with unusual buffer size.
 
-#ifdef _WIN32
-    WinMMap *   MappedFile;  // File mapping for fast read access.
-#endif
-
     void  Extend();
     int   FillGzBuffer();
 
@@ -85,9 +65,6 @@
         if (Data != NULL) { delete[] Data; }
         if (FileBuffer != NULL) { delete[] FileBuffer; }
         if (FileName != NULL) { delete[] FileName; }
-#ifdef _WIN32
-        delete MappedFile;
-#endif
     }
 
     void Init();
@@ -96,9 +73,6 @@
 
     errorT Create (const char * name, fileModeT fmode);
     errorT Open  (const char * name, fileModeT fmode);
-#ifdef _WIN32
-    errorT OpenMappedFile (const char * name, fileModeT fmode);
-#endif
     void   CreateMemory () { Close(); Init(); }
     errorT Close ();
 
@@ -149,10 +123,6 @@
     case MFILE_GZIP:
         if (GzBuffer_Avail > 0) { return 0; }
         return gzeof(GzHandle);
-#ifdef _WIN32
-    case MFILE_MMAP:
-        return Location >= MappedFile->size();
-#endif
     default:
         return false;
     }
@@ -186,8 +156,8 @@
         CurrentPtr++;
         return (int) value;
     }
+    Location++;
     if (Type == MFILE_GZIP) {
-        Location++;
         if (GzBuffer_Avail <= 0) {
             return FillGzBuffer();
         }
@@ -196,22 +166,11 @@
         GzBuffer_Current++;
         return retval;
     }
-#ifdef _WIN32
-    if (Type == MFILE_MMAP) {
-        if (Location >= MappedFile->size()) { return EOF; }
-        return *(MappedFile->address() + Location++);
-    } else {
-        Location++;
-        return getc(Handle);
-    }
-#else
-    Location++;
-# ifdef __GNUC__
+    #ifdef __GNUC__
     return getc_unlocked(Handle);
-# else
+    #else
     return getc(Handle);
-# endif
-#endif
+    #endif
 }
 
 #endif  // SCID_MFILE_H
