summaryrefslogtreecommitdiff
path: root/src/decompress_lzma.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/decompress_lzma.cc')
-rw-r--r--src/decompress_lzma.cc13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/decompress_lzma.cc b/src/decompress_lzma.cc
index 6baea18..299803d 100644
--- a/src/decompress_lzma.cc
+++ b/src/decompress_lzma.cc
@@ -63,9 +63,16 @@ class XzReader : public io::Reader {
if (!in_eof_)
buffer_->consume(stream_.next_in - rptr);
} else {
- return std::unexpected(
- ret == LZMA_DATA_ERROR
- ? io::ReadError::InvalidData : io::ReadError::Error);
+ switch (ret) {
+ case LZMA_DATA_ERROR:
+ return std::unexpected(io::ReadError::InvalidData);
+ case LZMA_BUF_ERROR:
+ // Tricky, could also be because of too little input.
+ // TODO: Improve logic here if we can
+ return std::unexpected(io::ReadError::MaxTooSmall);
+ default:
+ return std::unexpected(io::ReadError::Error);
+ }
}
return got;
}