diff --git a/libqpdf/QPDF.cc b/libqpdf/QPDF.cc index d38f4d7..ce42916 100644 --- a/libqpdf/QPDF.cc +++ b/libqpdf/QPDF.cc @@ -13,6 +13,7 @@ #include #include +#include #include #include #include @@ -2761,12 +2762,11 @@ QPDF::pipeStreamData( bool attempted_finish = false; try { - file->seek(offset, SEEK_SET); - auto buf = std::make_unique(length); - if (auto read = file->read(buf.get(), length); read != length) { - throw damagedPDF(*file, "", offset + toO(read), "unexpected EOF reading stream data"); + auto buf = file->read(length, offset); + if (buf.size() != length) { + throw damagedPDF(*file, "", offset + toO(buf.size()), "unexpected EOF reading stream data"); } - pipeline->write(buf.get(), length); + pipeline->write(buf.data(), length); attempted_finish = true; pipeline->finish(); return true;