Current News Archived News Search News Discussion Forum Old Forum Install Programs More Downloads... Troubleshooting Source Code Format Specs. Misc. Information Non-SF Stuff Links Small banner for links to this site: |
diff --git a/SFmpqapi.cpp b/SFmpqapi.cpp
--- a/SFmpqapi.cpp
+++ b/SFmpqapi.cpp
@@ -1136,21 +1136,18 @@ DWORD SFMPQAPI WINAPI SFileSetFilePointer(MPQHANDLE hFile, LONG lDistanceToMove,
long fsz = mpqOpenFile->lpBlockEntry->dwFullSize;
long cpos = mpqOpenFile->dwFilePointer;
switch (dwMoveMethod) {
- case FILE_BEGIN:
- if (lDistanceToMove<0 || lDistanceToMove>fsz) return (DWORD)-1;
- mpqOpenFile->dwFilePointer = lDistanceToMove;
- break;
case FILE_CURRENT:
- if (lDistanceToMove<cpos || cpos+lDistanceToMove>fsz) return (DWORD)-1;
+ if (cpos + lDistanceToMove < 0 || cpos + lDistanceToMove > fsz) return (DWORD)-1;
mpqOpenFile->dwFilePointer += lDistanceToMove;
break;
case FILE_END:
- if (lDistanceToMove<fsz || lDistanceToMove>0) return (DWORD)-1;
- mpqOpenFile->dwFilePointer = fsz+lDistanceToMove;
+ if (fsz + lDistanceToMove < 0 || lDistanceToMove > 0) return (DWORD)-1;
+ mpqOpenFile->dwFilePointer = fsz + lDistanceToMove;
break;
+ case FILE_BEGIN:
default:
- if (lDistanceToMove<0 || lDistanceToMove>fsz) return (DWORD)-1;
+ if (lDistanceToMove < 0 || lDistanceToMove > fsz) return (DWORD)-1;
mpqOpenFile->dwFilePointer = lDistanceToMove;
}
if (lplDistanceToMoveHigh!=0) *lplDistanceToMoveHigh = 0;
@@ -2187,6 +2184,7 @@ BOOL SFMPQAPI WINAPI MpqAddFileFromBufferEx(MPQHANDLE hMPQ, LPVOID lpBuffer, DWO
if (i==TotalBlocks-1 && (ucfsz % blockSize)!=0) blockSize=ucfsz % blockSize;
DWORD outLength=blockSize;
BYTE *compdata = compbuffer;
+ char *oldoutbuffer = outbuffer;
if (dwFlags & MAFA_COMPRESS)
{
memcpy(compdata,(char *)buffer+CurPos,blockSize);
@@ -2233,6 +2231,7 @@ BOOL SFMPQAPI WINAPI MpqAddFileFromBufferEx(MPQHANDLE hMPQ, LPVOID lpBuffer, DWO
memcpy((char *)newbuffer+LastOffset,outbuffer,outLength);
LastOffset+=outLength;
}
+ outbuffer = oldoutbuffer;
CurPos += blockSize;
}
fsz = LastOffset;
DWORD i;
if (hFile==INVALID_HANDLE_VALUE) {
for (i=0;i<10000;i++) {
- sprintf(lpFileName,"%s.compact.%04ld",mpqOpenArc->lpFileName,i);
+ sprintf(lpFileName,"%s.compact.%04d",mpqOpenArc->lpFileName,i);
hFile = CreateFile(lpFileName,GENERIC_READ|GENERIC_WRITE,0,0,CREATE_NEW,0,0);
if (hFile!=INVALID_HANDLE_VALUE) break;
@@ -3404,7 +3403,7 @@ DWORD DetectFileSeedEx(MPQARCHIVE * mpqOpenArc, HASHTABLEENTRY * lpHashEntry, LP
else {
HANDLE hlFile,hMPQ=(HANDLE)mpqOpenArc;
DWORD fsz;
- char *listbuffer;
+ char *listbuffer = 0;
LCID lcOldLocale = LocaleID;
for (DWORD lcn=0;lcn<nLocales;lcn++) {
LocaleID = availLocales[lcn];
@@ -3427,7 +3426,7 @@ DWORD DetectFileSeedEx(MPQARCHIVE * mpqOpenArc, HASHTABLEENTRY * lpHashEntry, LP
}
SFileCloseFile(hlFile);
if (listbuffer!=0) {
- char *listline;
+ char *listline = 0;
for (listline=listbuffer;listline!=0;listline=nextline(listline)) {
if (listline[0]==0) break;
DWORD lnlen=strlnlen(listline);
|