On 32bit linux fopen can't open large files (>2Gb i think). System.cpp uses fopen to test if a file exists. The code that reads the files uses open (not fopen) with flag O_LARGEFILE. Before the map patch these files where just read, not tested for existens. One solution could be to change the exitens test to use open. The following patch works for me:
--- a/contrib/extractor/System.cpp
+++ b/contrib/extractor/System.cpp
@@ -1,6 +1,9 @@
#define _CRT_SECURE_NO_DEPRECATE
#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
#include <deque>
#include <set>
#include <cstdlib>
@@ -81,9 +84,10 @@ void CreateDir( const std::string& Path )
bool FileExists( const char* FileName )
{
- if(FILE* fp = fopen( FileName, "rb" ))
+ int fd = open( FileName, O_RDONLY | O_LARGEFILE );
+ if(fd >= 0)
{
- fclose(fp);
+ close(fd);
return true;
}