aboutsummaryrefslogtreecommitdiffstats
path: root/qpdf/test_driver.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2012-07-07 23:33:45 +0200
committerJay Berkenbilt <ejb@ql.org>2012-07-07 23:33:45 +0200
commite2dedde4bdb5fa68c86d412e534a4b2750739988 (patch)
tree34f2b4ec6897d605067dd2ad39c53441f74c57e7 /qpdf/test_driver.cc
parent8705e2e8fc1a9721b2438c09ba7e92ec673af19d (diff)
downloadqpdf-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.cc17
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)
{