diff options
author | Jay Berkenbilt <ejb@ql.org> | 2012-07-07 23:33:45 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2012-07-07 23:33:45 +0200 |
commit | e2dedde4bdb5fa68c86d412e534a4b2750739988 (patch) | |
tree | 34f2b4ec6897d605067dd2ad39c53441f74c57e7 /qpdf/test_driver.cc | |
parent | 8705e2e8fc1a9721b2438c09ba7e92ec673af19d (diff) | |
download | qpdf-e2dedde4bdb5fa68c86d412e534a4b2750739988.tar.zst |
Don't require stream data provider to know length in advance
Breaking API change: length parameter has disappeared from the
StreamDataProvider version of QPDFObjectHandle::replaceStreamData
since it is no longer necessary to compute it in advance. This
breaking change is justified by the fact that removing the length
parameter provides the caller an opportunity to simplify the calling
code.
Diffstat (limited to 'qpdf/test_driver.cc')
-rw-r--r-- | qpdf/test_driver.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc index 89b422ac..8373bd04 100644 --- a/qpdf/test_driver.cc +++ b/qpdf/test_driver.cc @@ -478,7 +478,17 @@ void runtest(int n, char const* filename) PointerHolder<QPDFObjectHandle::StreamDataProvider> p = provider; qstream.replaceStreamData( p, QPDFObjectHandle::newName("/FlateDecode"), - QPDFObjectHandle::newNull(), b->getSize()); + QPDFObjectHandle::newNull()); + provider->badLength(false); + QPDFWriter w(pdf, "a.pdf"); + w.setStaticID(true); + // Linearize to force the provider to be called multiple times. + w.setLinearization(true); + w.setStreamDataMode(qpdf_s_preserve); + w.write(); + + // Every time a provider pipes stream data, it has to provide + // the same amount of data. provider->badLength(true); try { @@ -489,11 +499,6 @@ void runtest(int n, char const* filename) { std::cout << "exception: " << e.what() << std::endl; } - provider->badLength(false); - QPDFWriter w(pdf, "a.pdf"); - w.setStaticID(true); - w.setStreamDataMode(qpdf_s_preserve); - w.write(); } else if (n == 9) { |