--- blobandconquer-0.99.orig/src/pak.cpp
+++ blobandconquer-0.99/src/pak.cpp
@@ -165,12 +165,12 @@
 				fSize = gzread(fp, buffer, filesize);
 				gzclose(fp);
 
-				cSize = (uLongf)((fSize * 1.01) + 12);
+				cSize = (Uint32)((fSize * 1.01) + 12);
 				compress2(output, &cSize, buffer, fSize, 9);
 				
 				f = filename;
 				
-				fileData[files].set(f, fSize, cSize, ftell(pak));
+				fileData[files].set(f, (Uint32)fSize, (Uint32)cSize, (Uint32)ftell(pak));
 
 				fwrite(output, 1, cSize, pak);
 
@@ -229,7 +229,10 @@
 			break;
 		}
 
-		fwrite(&fileData[i], sizeof(FileData), 1, pak);
+		fwrite(fileData[i].name, PAK_MAX_FILENAME, 1, pak);
+		fwrite(&fileData[i].cSize, sizeof (Uint32), 1, pak);
+		fwrite(&fileData[i].fSize, sizeof (Uint32), 1, pak);
+		fwrite(&fileData[i].location, sizeof (Uint32), 1, pak);
 	}
 	
 	unsigned int numberOfFiles = totalFiles;
--- blobandconquer-0.99.orig/src/cplusplus/CPak.cpp
+++ blobandconquer-0.99/src/cplusplus/CPak.cpp
@@ -76,7 +76,7 @@
 
 void Pak::initPakFile()
 {
-	uLongf listPos;
+	Uint32 listPos;
 
 	debug(("Pak : Filename set to %s\n", PAKFULLPATH));
 
@@ -105,7 +105,10 @@
 
 	for (unsigned int i = 0 ; i < numberOfFiles ; i++)
 	{
-		if (!fread(&fd, sizeof(FileData), 1, pak))
+		if (!fread(fd.name, PAK_MAX_FILENAME, 1, pak) ||
+		    !fread(&fd.cSize, sizeof (Uint32), 1, pak) ||
+		    !fread(&fd.fSize, sizeof (Uint32), 1, pak) ||
+		    !fread(&fd.location, sizeof (Uint32), 1, pak))
 		{
 			printf("Pak::setPakFile - UNEXPECTED END OF FILE DATA ENCOUNTERED!\n");
 			exit(1);
@@ -169,8 +172,10 @@
 		fread(input, 1, fileData->cSize, pak);
 	
 		fclose(pak);
-	
-		uncompress(*buffer, &fileData->fSize, input, fileData->cSize);
+
+		uLongf fSize = fileData->fSize;
+		uncompress(*buffer, &fSize, input, fileData->cSize);
+		fileData->fSize = (Uint32) fSize;
 	
 		if (input != NULL)
 		{
--- blobandconquer-0.99.orig/src/cplusplus/CFileData.cpp
+++ blobandconquer-0.99/src/cplusplus/CFileData.cpp
@@ -28,7 +28,7 @@
 	location = 0;
 }
 
-void FileData::set(const char *name, uLongf fSize, uLongf cSize, uLongf location)
+void FileData::set(const char *name, Uint32 fSize, Uint32 cSize, Uint32 location)
 {
 	strcpy(this->name, name);
 	this->fSize = fSize;
--- blobandconquer-0.99.orig/src/cplusplus/CFileData.h
+++ blobandconquer-0.99/src/cplusplus/CFileData.h
@@ -23,12 +23,12 @@
 	public:
 
 		char name[PAK_MAX_FILENAME];
-		uLongf cSize;
-		uLongf fSize;
-		uLongf location;
+		Uint32 cSize;
+		Uint32 fSize;
+		Uint32 location;
 
 	FileData();
-	void set(const char *filename, uLongf fSize, uLongf cSize, uLongf location);
+	void set(const char *filename, Uint32 fSize, Uint32 cSize, Uint32 location);
 	void swapEndians();
 
 };
