From 78da6626a0eb04653cf7655dee97cf3ad487fbb4 Mon Sep 17 00:00:00 2001 From: TimePath Date: Tue, 1 Aug 2017 20:25:13 +1000 Subject: [PATCH] Fix minizip regression Closes #107 Useless memcpy wasn't useless... --- tools/quake3/common/vfs.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/quake3/common/vfs.c b/tools/quake3/common/vfs.c index e0cd888f..0c3ca69f 100644 --- a/tools/quake3/common/vfs.c +++ b/tools/quake3/common/vfs.c @@ -56,6 +56,7 @@ typedef struct { char* name; unzFile zipfile; + unz_file_pos zippos; guint32 size; } VFS_PAKFILE; @@ -128,6 +129,11 @@ static void vfsInitPakFile( const char *filename ){ if ( err != UNZ_OK ) { break; } + unz_file_pos pos; + err = unzGetFilePos( uf, &pos ); + if ( err != UNZ_OK ) { + break; + } file = (VFS_PAKFILE*)safe_malloc( sizeof( VFS_PAKFILE ) ); g_pakFiles = g_slist_append( g_pakFiles, file ); @@ -138,6 +144,7 @@ static void vfsInitPakFile( const char *filename ){ file->name = strdup( filename_inzip ); file->size = file_info.uncompressed_size; file->zipfile = uf; + file->zippos = pos; if ( ( i + 1 ) < gi.number_entry ) { err = unzGoToNextFile( uf ); @@ -383,6 +390,9 @@ int vfsLoadFile( const char *filename, void **bufferptr, int index ){ if ( count == index ) { + if ( unzGoToFilePos( file->zipfile, &file->zippos ) != UNZ_OK ) { + return -1; + } if ( unzOpenCurrentFile( file->zipfile ) != UNZ_OK ) { return -1; } -- 2.39.2