summaryrefslogtreecommitdiff
path: root/updater/zbin/minizip/ioapi.c
diff options
context:
space:
mode:
Diffstat (limited to 'updater/zbin/minizip/ioapi.c')
-rw-r--r--updater/zbin/minizip/ioapi.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/updater/zbin/minizip/ioapi.c b/updater/zbin/minizip/ioapi.c
index c3f75ce..0916ffa 100644
--- a/updater/zbin/minizip/ioapi.c
+++ b/updater/zbin/minizip/ioapi.c
@@ -32,11 +32,22 @@ long call_zseek64 (const zlib_filefunc64_32_def* pfilefunc,voidpf filestream, ZP
return (*(pfilefunc->zfile_func64.zseek64_file)) (pfilefunc->zfile_func64.opaque,filestream,offset,origin);
else
{
- uLong offsetTruncated = (uLong)offset;
- if (offsetTruncated != offset)
- return -1;
- else
- return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin);
+ if (origin == ZLIB_FILEFUNC_SEEK_SET)
+ {
+ uLong offsetTruncated = (uLong)offset;
+ if (offsetTruncated != offset)
+ return -1;
+ else
+ return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin);
+ }
+ else
+ {
+ long offsetTruncated = (long)(__int64)offset;
+ if (offsetTruncated != (__int64)offset)
+ return -1;
+ else
+ return (*(pfilefunc->zseek32_file))(pfilefunc->zfile_func64.opaque,filestream,offsetTruncated,origin);
+ }
}
}