From a254f5a3a8396865cf05e27e0ab03345ee66783a Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 24 Nov 2014 22:08:11 +0100 Subject: [PATCH] archive/zzip: fix inverted error handler Set the Error when zzip_seek()==-1 and not on success. Fixes a crash after seeking. --- NEWS | 2 ++ src/archive/ZzipArchivePlugin.cxx | 9 +++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/NEWS b/NEWS index 8a39a6504..4699f6666 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,6 @@ ver 0.18.19 (not yet released) +* archive + - zzip: fix crash after seeking ver 0.18.18 (2014/11/18) * decoder diff --git a/src/archive/ZzipArchivePlugin.cxx b/src/archive/ZzipArchivePlugin.cxx index 973fe91dc..d3e4cc837 100644 --- a/src/archive/ZzipArchivePlugin.cxx +++ b/src/archive/ZzipArchivePlugin.cxx @@ -186,12 +186,13 @@ zzip_input_seek(InputStream *is, InputPlugin::offset_type offset, { ZzipInputStream *zis = (ZzipInputStream *)is; zzip_off_t ofs = zzip_seek(zis->file, offset, whence); - if (ofs != -1) { + if (ofs < 0) { error.Set(zzip_domain, "zzip_seek() has failed"); - is->offset = ofs; - return true; + return false; } - return false; + + is->offset = ofs; + return true; } /* exported structures */