]> git.cworth.org Git - apitrace/blobdiff - common/trace_file_zlib.cpp
Fix SnappyFile::rawGetc() on big endian hosts.
[apitrace] / common / trace_file_zlib.cpp
index 92cead9188862ddb57d4bf74d79e14082680eac2..5d47d5387b366d472777f3577980386f06f80c2a 100644 (file)
@@ -53,7 +53,7 @@ public:
 protected:
     virtual bool rawOpen(const std::string &filename, File::Mode mode);
     virtual bool rawWrite(const void *buffer, size_t length);
-    virtual bool rawRead(void *buffer, size_t length);
+    virtual size_t rawRead(void *buffer, size_t length);
     virtual int rawGetc();
     virtual void rawClose();
     virtual void rawFlush();
@@ -73,6 +73,7 @@ ZLibFile::ZLibFile(const std::string &filename,
 
 ZLibFile::~ZLibFile()
 {
+    close();
 }
 
 bool ZLibFile::rawOpen(const std::string &filename, File::Mode mode)
@@ -99,9 +100,10 @@ bool ZLibFile::rawWrite(const void *buffer, size_t length)
     return gzwrite(m_gzFile, buffer, length) != -1;
 }
 
-bool ZLibFile::rawRead(void *buffer, size_t length)
+size_t ZLibFile::rawRead(void *buffer, size_t length)
 {
-    return gzread(m_gzFile, buffer, length) != -1;
+    int ret = gzread(m_gzFile, buffer, length);
+    return ret < 0 ? 0 : ret;
 }
 
 int ZLibFile::rawGetc()