diff --git a/src/gzip.cpp b/src/gzip.cpp index e47c932..5aa43f6 100644 --- a/src/gzip.cpp +++ b/src/gzip.cpp @@ -1,11 +1,10 @@ -#include -#include +#include #include #include "gzip.h" #define CHUNK 16384 -QByteArray Gzip::uncompress(QIODevice *device, qint64 limit) +QByteArray Gzip::uncompress(QIODevice *device, int limit) { int ret; z_stream strm; diff --git a/src/gzip.h b/src/gzip.h index f48c52f..cad2461 100644 --- a/src/gzip.h +++ b/src/gzip.h @@ -7,7 +7,7 @@ class QIODevice; namespace Gzip { - QByteArray uncompress(QIODevice *device, qint64 limit = 0); + QByteArray uncompress(QIODevice *device, int limit = 0); } #endif // GZIP_H diff --git a/src/pbfhandler.cpp b/src/pbfhandler.cpp index 3728d11..d00ff3f 100644 --- a/src/pbfhandler.cpp +++ b/src/pbfhandler.cpp @@ -65,12 +65,14 @@ bool PBFHandler::read(QImage *image) return false; QByteArray ba; - if (isGZIPPBF(magic)) + if (isGZIPPBF(magic)) { ba = Gzip::uncompress(device()); - else if (isPlainPBF(magic)) + if (ba.isNull()) { + qCritical() << "Invalid gzip data"; + return false; + } + } else if (isPlainPBF(magic)) ba = device()->readAll(); - if (ba.isNull()) - return false; vector_tile::Tile data; if (!data.ParseFromArray(ba.constData(), ba.size())) { qCritical() << "Invalid PBF data";