diff options
Diffstat (limited to 'libqpdf/Pl_StdioFile.cc')
-rw-r--r-- | libqpdf/Pl_StdioFile.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libqpdf/Pl_StdioFile.cc b/libqpdf/Pl_StdioFile.cc index 4d3cba60..253e36a1 100644 --- a/libqpdf/Pl_StdioFile.cc +++ b/libqpdf/Pl_StdioFile.cc @@ -4,9 +4,18 @@ #include <stdexcept> #include <errno.h> +Pl_StdioFile::Members::Members(FILE* f) : + file(f) +{ +} + +Pl_StdioFile::Members::~Members() +{ +} + Pl_StdioFile::Pl_StdioFile(char const* identifier, FILE* f) : Pipeline(identifier, 0), - file(f) + m(new Members(f)) { } @@ -20,7 +29,7 @@ Pl_StdioFile::write(unsigned char* buf, size_t len) size_t so_far = 0; while (len > 0) { - so_far = fwrite(buf, 1, len, this->file); + so_far = fwrite(buf, 1, len, this->m->file); if (so_far == 0) { QUtil::throw_system_error( @@ -37,7 +46,7 @@ Pl_StdioFile::write(unsigned char* buf, size_t len) void Pl_StdioFile::finish() { - if ((fflush(this->file) == -1) && + if ((fflush(this->m->file) == -1) && (errno == EBADF)) { throw std::logic_error( |