X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=trace_snappyfile.cpp;h=1794a829c6635c2a57a11b33e446958dc908fe54;hb=c07f0288b4a5107e4702b4a6c748866509b37612;hp=db20abb97e120df95dcad10438c58fb67666ad81;hpb=5f78882308c311b42c88e14e261289dd4208f4d7;p=apitrace diff --git a/trace_snappyfile.cpp b/trace_snappyfile.cpp index db20abb..1794a82 100644 --- a/trace_snappyfile.cpp +++ b/trace_snappyfile.cpp @@ -211,7 +211,7 @@ void SnappyFile::flushWriteCache() assert(m_cachePtr == m_cache); } -void SnappyFile::flushReadCache() +void SnappyFile::flushReadCache(size_t skipLength) { //assert(m_cachePtr == m_cache + m_cacheSize); m_currentOffset.chunk = m_stream.tellg(); @@ -223,8 +223,10 @@ void SnappyFile::flushReadCache() ::snappy::GetUncompressedLength(m_compressedCache, compressedLength, &m_cacheSize); createCache(m_cacheSize); - ::snappy::RawUncompress(m_compressedCache, compressedLength, - m_cache); + if (skipLength < m_cacheSize) { + ::snappy::RawUncompress(m_compressedCache, compressedLength, + m_cache); + } } else { createCache(0); } @@ -300,7 +302,7 @@ void SnappyFile::setCurrentOffset(const File::Offset &offset) } -bool SnappyFile::rawSkip(unsigned length) +bool SnappyFile::rawSkip(size_t length) { if (endOfData()) { return false; @@ -315,7 +317,7 @@ bool SnappyFile::rawSkip(unsigned length) m_cachePtr += chunkSize; sizeToRead -= chunkSize; if (sizeToRead > 0) { - flushReadCache(); + flushReadCache(sizeToRead); } if (!m_cacheSize) { break;