Skip to content

Commit aebafcf

Browse files
authored
LIBMINIZIP: Compatible with Windows platform long size (#463)
Patch with the description of "On Windows platforms, long is always 4 bytes, which causes truncation of 64-bit pointers." However, unsigned long int is also 4 bytes.
1 parent 6970900 commit aebafcf

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

libraries/libminizip/ioapi_mem.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ voidpf ZCALLBACK fopen_mem_func (opaque, filename, mode)
9393
* architectures
9494
*/
9595

96-
unsigned long int p=0;
97-
if (sscanf(filename,"%lx+%lx",&p,&mem->size)!=2) {
96+
size_t p=0;
97+
if (sscanf(filename,"%zx+%lx",&p,&mem->size)!=2) {
9898
printf("sscanf failed\n");
9999
return NULL;
100100
}

libraries/libminizip/minizip.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ int minizip_unpack_to_disk(char *path, void *ptr, int len)
7474
zlib_filefunc_def pzlib_filefunc_def;
7575
fill_memory_filefunc(&pzlib_filefunc_def);
7676
char memname[128];
77-
sprintf(memname,"%lx+%lx", (unsigned long)ptr, (unsigned long)len);
77+
sprintf(memname,"%zx+%lx", (size_t)ptr, (unsigned long)len);
7878
unzFile hFile = unzOpen2(memname,&pzlib_filefunc_def);
7979

8080
// get info
@@ -148,7 +148,7 @@ void *minizip_unpack_to_memory(void *ptr, int len, int *unpack_len)
148148
zlib_filefunc_def pzlib_filefunc_def;
149149
fill_memory_filefunc(&pzlib_filefunc_def);
150150
char memname[128];
151-
sprintf(memname,"%lx+%lx", (unsigned long)ptr, (unsigned long)len);
151+
sprintf(memname,"%zx+%lx", (size_t)ptr, (unsigned long)len);
152152
unzFile hFile = unzOpen2(memname,&pzlib_filefunc_def);
153153
if (unzGoToFirstFile(hFile) != UNZ_OK) goto unpack_to_mem_fail;
154154
if (unzOpenCurrentFile(hFile) != UNZ_OK) goto unpack_to_mem_fail;

0 commit comments

Comments
 (0)