Improve error messages for zlib decompression errors
parent
21b9ffe0a1
commit
d5b3b2a7da
|
@ -49,7 +49,7 @@ ustring ZlibDecompressor::decompress()
|
|||
strm.avail_in = size;
|
||||
|
||||
if (inflateInit(&strm) != Z_OK) {
|
||||
throw DecompressError();
|
||||
throw DecompressError(strm.msg);
|
||||
}
|
||||
|
||||
strm.next_in = const_cast<unsigned char *>(data);
|
||||
|
@ -61,7 +61,7 @@ ustring ZlibDecompressor::decompress()
|
|||
buffer += ustring(reinterpret_cast<unsigned char *>(temp_buffer), BUFSIZE - strm.avail_out);
|
||||
} while (ret == Z_OK);
|
||||
if (ret != Z_STREAM_END) {
|
||||
throw DecompressError();
|
||||
throw DecompressError(strm.msg);
|
||||
}
|
||||
m_seekPos += strm.next_in - data;
|
||||
(void)inflateEnd(&strm);
|
||||
|
|
|
@ -18,7 +18,9 @@
|
|||
class ZlibDecompressor
|
||||
{
|
||||
public:
|
||||
class DecompressError {
|
||||
struct DecompressError {
|
||||
DecompressError(std::string m = "(unknown error)") : message(m) {}
|
||||
const std::string message;
|
||||
};
|
||||
|
||||
ZlibDecompressor(const unsigned char *data, std::size_t size);
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
#include "TileGenerator.h"
|
||||
#include "ZlibDecompressor.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
|
@ -379,6 +380,9 @@ int main(int argc, char *argv[])
|
|||
} catch(std::runtime_error e) {
|
||||
std::cout<<"Exception: "<<e.what()<<std::endl;
|
||||
return 1;
|
||||
} catch(ZlibDecompressor::DecompressError e) {
|
||||
std::cout<<"Block decompression failure: "<<e.message<<std::endl;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue