summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2013-03-04 16:59:20 +0100
committerJay Berkenbilt <ejb@ql.org>2013-03-05 19:35:46 +0100
commit29f5830325f810612b8c683282133c47f5da0b33 (patch)
treef454aad34dbfcd42dfcb14222ca7493a564c58cd
parent119f2a4b684aae7cec8841412a5fc89bcbae404d (diff)
downloadqpdf-29f5830325f810612b8c683282133c47f5da0b33.tar.zst
Fix getTypeCode and getTypeName work for indirect objects
Remove const qualifier from getTypeCode and get getTypeName methods of QPDFObjectHandle, make them work properly for indirect objects, and exercise them much better in the test suite.
-rw-r--r--include/qpdf/QPDFObjectHandle.hh4
-rw-r--r--libqpdf/QPDFObjectHandle.cc10
-rw-r--r--qpdf/qtest/qpdf/bad10-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad11-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad12-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad12.out2
-rw-r--r--qpdf/qtest/qpdf/bad2-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad22-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad23-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad25-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad26-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad27-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad28-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad28.out2
-rw-r--r--qpdf/qtest/qpdf/bad3-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad30-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad30.out2
-rw-r--r--qpdf/qtest/qpdf/bad31-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad31.out2
-rw-r--r--qpdf/qtest/qpdf/bad32-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad33-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad34-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad4-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad5-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad6-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad6.out2
-rw-r--r--qpdf/qtest/qpdf/bad8-recover.out2
-rw-r--r--qpdf/qtest/qpdf/bad9-recover.out2
-rw-r--r--qpdf/qtest/qpdf/good1.out2
-rw-r--r--qpdf/qtest/qpdf/good10.out2
-rw-r--r--qpdf/qtest/qpdf/good11.out2
-rw-r--r--qpdf/qtest/qpdf/good12.out2
-rw-r--r--qpdf/qtest/qpdf/good13.out2
-rw-r--r--qpdf/qtest/qpdf/good15.out2
-rw-r--r--qpdf/qtest/qpdf/good16.out2
-rw-r--r--qpdf/qtest/qpdf/good17.out2
-rw-r--r--qpdf/qtest/qpdf/good18.out2
-rw-r--r--qpdf/qtest/qpdf/good19.out2
-rw-r--r--qpdf/qtest/qpdf/good2.out2
-rw-r--r--qpdf/qtest/qpdf/good20.out2
-rw-r--r--qpdf/qtest/qpdf/good3.out2
-rw-r--r--qpdf/qtest/qpdf/good4.out2
-rw-r--r--qpdf/qtest/qpdf/good5.out2
-rw-r--r--qpdf/qtest/qpdf/good6.out2
-rw-r--r--qpdf/qtest/qpdf/good7.out2
-rw-r--r--qpdf/qtest/qpdf/good8.out2
-rw-r--r--qpdf/qtest/qpdf/good9.out2
-rw-r--r--qpdf/test_driver.cc4
48 files changed, 56 insertions, 52 deletions
diff --git a/include/qpdf/QPDFObjectHandle.hh b/include/qpdf/QPDFObjectHandle.hh
index c42fa719..60304ed5 100644
--- a/include/qpdf/QPDFObjectHandle.hh
+++ b/include/qpdf/QPDFObjectHandle.hh
@@ -102,9 +102,9 @@ class QPDFObjectHandle
// useful for doing rapid type tests (like switch statements) or
// for testing and debugging.
QPDF_DLL
- QPDFObject::object_type_e getTypeCode() const;
+ QPDFObject::object_type_e getTypeCode();
QPDF_DLL
- char const* getTypeName() const;
+ char const* getTypeName();
// Exactly one of these will return true for any object. Operator
// and InlineImage are only allowed in content streams.
diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc
index 0c6b0a9d..84db6003 100644
--- a/libqpdf/QPDFObjectHandle.cc
+++ b/libqpdf/QPDFObjectHandle.cc
@@ -87,10 +87,11 @@ QPDFObjectHandle::isInitialized() const
}
QPDFObject::object_type_e
-QPDFObjectHandle::getTypeCode() const
+QPDFObjectHandle::getTypeCode()
{
- if (obj.getPointer())
+ if (this->initialized)
{
+ dereference();
return obj->getTypeCode();
}
else
@@ -100,10 +101,11 @@ QPDFObjectHandle::getTypeCode() const
}
char const*
-QPDFObjectHandle::getTypeName() const
+QPDFObjectHandle::getTypeName()
{
- if (obj.getPointer())
+ if (this->initialized)
{
+ dereference();
return obj->getTypeName();
}
else
diff --git a/qpdf/qtest/qpdf/bad10-recover.out b/qpdf/qtest/qpdf/bad10-recover.out
index 25de9bcc..32b12612 100644
--- a/qpdf/qtest/qpdf/bad10-recover.out
+++ b/qpdf/qtest/qpdf/bad10-recover.out
@@ -2,7 +2,7 @@ WARNING: bad10.pdf: file is damaged
WARNING: bad10.pdf (trailer, file position 712): /Size key in trailer dictionary is not an integer
WARNING: bad10.pdf: Attempting to reconstruct cross-reference table
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad11-recover.out b/qpdf/qtest/qpdf/bad11-recover.out
index 43bcd068..82e891b0 100644
--- a/qpdf/qtest/qpdf/bad11-recover.out
+++ b/qpdf/qtest/qpdf/bad11-recover.out
@@ -2,7 +2,7 @@ WARNING: bad11.pdf: file is damaged
WARNING: bad11.pdf (trailer, file position 905): /Prev key in trailer dictionary is not an integer
WARNING: bad11.pdf: Attempting to reconstruct cross-reference table
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad12-recover.out b/qpdf/qtest/qpdf/bad12-recover.out
index 97dfb642..0c07a7fd 100644
--- a/qpdf/qtest/qpdf/bad12-recover.out
+++ b/qpdf/qtest/qpdf/bad12-recover.out
@@ -1,6 +1,6 @@
WARNING: bad12.pdf: reported number of objects (9) inconsistent with actual number of objects (8)
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad12.out b/qpdf/qtest/qpdf/bad12.out
index d07d74bd..666e92fd 100644
--- a/qpdf/qtest/qpdf/bad12.out
+++ b/qpdf/qtest/qpdf/bad12.out
@@ -1,6 +1,6 @@
WARNING: bad12.pdf: reported number of objects (9) inconsistent with actual number of objects (8)
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad2-recover.out b/qpdf/qtest/qpdf/bad2-recover.out
index 569ca19c..7b16b963 100644
--- a/qpdf/qtest/qpdf/bad2-recover.out
+++ b/qpdf/qtest/qpdf/bad2-recover.out
@@ -2,7 +2,7 @@ WARNING: bad2.pdf: file is damaged
WARNING: bad2.pdf: can't find startxref
WARNING: bad2.pdf: Attempting to reconstruct cross-reference table
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad22-recover.out b/qpdf/qtest/qpdf/bad22-recover.out
index 41eb3e34..4a44fad9 100644
--- a/qpdf/qtest/qpdf/bad22-recover.out
+++ b/qpdf/qtest/qpdf/bad22-recover.out
@@ -1,5 +1,5 @@
WARNING: bad22.pdf (object 4 0, file position 341): attempting to recover stream length
-/QTest is indirect
+/QTest is indirect and has type stream (10)
/QTest is a stream. Dictionary: << /Qength 44 >>
Raw stream data:
BT
diff --git a/qpdf/qtest/qpdf/bad23-recover.out b/qpdf/qtest/qpdf/bad23-recover.out
index 773205a9..729e8d28 100644
--- a/qpdf/qtest/qpdf/bad23-recover.out
+++ b/qpdf/qtest/qpdf/bad23-recover.out
@@ -1,5 +1,5 @@
WARNING: bad23.pdf (object 4 0, file position 341): attempting to recover stream length
-/QTest is indirect
+/QTest is indirect and has type stream (10)
/QTest is a stream. Dictionary: << /Length () >>
Raw stream data:
BT
diff --git a/qpdf/qtest/qpdf/bad25-recover.out b/qpdf/qtest/qpdf/bad25-recover.out
index 23893d5d..6e40c85b 100644
--- a/qpdf/qtest/qpdf/bad25-recover.out
+++ b/qpdf/qtest/qpdf/bad25-recover.out
@@ -3,7 +3,7 @@ WARNING: bad25.pdf (object 4 0, file position 307): expected n n obj
WARNING: bad25.pdf: Attempting to reconstruct cross-reference table
WARNING: bad25.pdf: object 4 0 not found in file after regenerating cross reference table
/QTest is implicit
-/QTest is indirect
+/QTest is indirect and has type null (2)
/QTest is null
unparse: 4 0 R
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad26-recover.out b/qpdf/qtest/qpdf/bad26-recover.out
index 248aff7d..ef1c02eb 100644
--- a/qpdf/qtest/qpdf/bad26-recover.out
+++ b/qpdf/qtest/qpdf/bad26-recover.out
@@ -3,7 +3,7 @@ WARNING: bad26.pdf (object 4 0, file position 307): expected n n obj
WARNING: bad26.pdf: Attempting to reconstruct cross-reference table
WARNING: bad26.pdf: object 4 0 not found in file after regenerating cross reference table
/QTest is implicit
-/QTest is indirect
+/QTest is indirect and has type null (2)
/QTest is null
unparse: 4 0 R
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad27-recover.out b/qpdf/qtest/qpdf/bad27-recover.out
index f06203b5..b0967b34 100644
--- a/qpdf/qtest/qpdf/bad27-recover.out
+++ b/qpdf/qtest/qpdf/bad27-recover.out
@@ -3,7 +3,7 @@ WARNING: bad27.pdf (object 4 0, file position 307): expected n n obj
WARNING: bad27.pdf: Attempting to reconstruct cross-reference table
WARNING: bad27.pdf: object 4 0 not found in file after regenerating cross reference table
/QTest is implicit
-/QTest is indirect
+/QTest is indirect and has type null (2)
/QTest is null
unparse: 4 0 R
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad28-recover.out b/qpdf/qtest/qpdf/bad28-recover.out
index 62322d92..ab152518 100644
--- a/qpdf/qtest/qpdf/bad28-recover.out
+++ b/qpdf/qtest/qpdf/bad28-recover.out
@@ -1,5 +1,5 @@
WARNING: bad28.pdf (object 4 0, file position 395): expected endobj
-/QTest is indirect
+/QTest is indirect and has type stream (10)
/QTest is a stream. Dictionary: << /Length 44 >>
Raw stream data:
BT
diff --git a/qpdf/qtest/qpdf/bad28.out b/qpdf/qtest/qpdf/bad28.out
index 11309bc5..fb02944e 100644
--- a/qpdf/qtest/qpdf/bad28.out
+++ b/qpdf/qtest/qpdf/bad28.out
@@ -1,5 +1,5 @@
WARNING: bad28.pdf (object 4 0, file position 395): expected endobj
-/QTest is indirect
+/QTest is indirect and has type stream (10)
/QTest is a stream. Dictionary: << /Length 44 >>
Raw stream data:
BT
diff --git a/qpdf/qtest/qpdf/bad3-recover.out b/qpdf/qtest/qpdf/bad3-recover.out
index e282d665..9d6438fa 100644
--- a/qpdf/qtest/qpdf/bad3-recover.out
+++ b/qpdf/qtest/qpdf/bad3-recover.out
@@ -2,7 +2,7 @@ WARNING: bad3.pdf: file is damaged
WARNING: bad3.pdf (file position 542): xref not found
WARNING: bad3.pdf: Attempting to reconstruct cross-reference table
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad30-recover.out b/qpdf/qtest/qpdf/bad30-recover.out
index 515bfbd5..5e228a58 100644
--- a/qpdf/qtest/qpdf/bad30-recover.out
+++ b/qpdf/qtest/qpdf/bad30-recover.out
@@ -1,4 +1,4 @@
-/QTest is indirect
+/QTest is indirect and has type stream (10)
/QTest is a stream. Dictionary: << /Filter (FlateDecode) /Length 123 >>
Raw stream data:
x%11 b;t4| wXID8G>rQu O E:IWPlII)rp4~;As/҅jcszT.?u<*6
diff --git a/qpdf/qtest/qpdf/bad30.out b/qpdf/qtest/qpdf/bad30.out
index 515bfbd5..5e228a58 100644
--- a/qpdf/qtest/qpdf/bad30.out
+++ b/qpdf/qtest/qpdf/bad30.out
@@ -1,4 +1,4 @@
-/QTest is indirect
+/QTest is indirect and has type stream (10)
/QTest is a stream. Dictionary: << /Filter (FlateDecode) /Length 123 >>
Raw stream data:
x%11 b;t4| wXID8G>rQu O E:IWPlII)rp4~;As/҅jcszT.?u<*6
diff --git a/qpdf/qtest/qpdf/bad31-recover.out b/qpdf/qtest/qpdf/bad31-recover.out
index 313e2083..527f27d0 100644
--- a/qpdf/qtest/qpdf/bad31-recover.out
+++ b/qpdf/qtest/qpdf/bad31-recover.out
@@ -1,4 +1,4 @@
-/QTest is indirect
+/QTest is indirect and has type stream (10)
/QTest is a stream. Dictionary: << /Filter [ /Oink /Moo /FlateDecode ] /Length 123 >>
Raw stream data:
x%11 b;t4| wXID8G>rQu O E:IWPlII)rp4~;As/҅jcszT.?u<*6
diff --git a/qpdf/qtest/qpdf/bad31.out b/qpdf/qtest/qpdf/bad31.out
index 2ad01536..7f1cfb58 100644
--- a/qpdf/qtest/qpdf/bad31.out
+++ b/qpdf/qtest/qpdf/bad31.out
@@ -1,4 +1,4 @@
-/QTest is indirect
+/QTest is indirect and has type stream (10)
/QTest is a stream. Dictionary: << /Filter [ /Oink /Moo /FlateDecode ] /Length 123 >>
Raw stream data:
x%11 b;t4| wXID8G>rQu O E:IWPlII)rp4~;As/҅jcszT.?u<*6
diff --git a/qpdf/qtest/qpdf/bad32-recover.out b/qpdf/qtest/qpdf/bad32-recover.out
index c038a297..4f8d5257 100644
--- a/qpdf/qtest/qpdf/bad32-recover.out
+++ b/qpdf/qtest/qpdf/bad32-recover.out
@@ -3,7 +3,7 @@ WARNING: bad32.pdf (object 4 0, file position 307): expected 4 0 obj
WARNING: bad32.pdf: Attempting to reconstruct cross-reference table
WARNING: bad32.pdf: object 4 0 not found in file after regenerating cross reference table
/QTest is implicit
-/QTest is indirect
+/QTest is indirect and has type null (2)
/QTest is null
unparse: 4 0 R
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad33-recover.out b/qpdf/qtest/qpdf/bad33-recover.out
index 51dabe67..7cb645a7 100644
--- a/qpdf/qtest/qpdf/bad33-recover.out
+++ b/qpdf/qtest/qpdf/bad33-recover.out
@@ -1,7 +1,7 @@
WARNING: bad33.pdf: file is damaged
WARNING: bad33.pdf (file position 1771): xref not found
WARNING: bad33.pdf: Attempting to reconstruct cross-reference table
-/QTest is indirect
+/QTest is indirect and has type stream (10)
/QTest is a stream. Dictionary: << /Filter (FlateDecode) /Length 123 >>
Raw stream data:
x%11 b;t4| wXID8G>rQu O E:IWPlII)rp4~;As/҅jcszT.?u<*6
diff --git a/qpdf/qtest/qpdf/bad34-recover.out b/qpdf/qtest/qpdf/bad34-recover.out
index 08cc7bb1..3343be70 100644
--- a/qpdf/qtest/qpdf/bad34-recover.out
+++ b/qpdf/qtest/qpdf/bad34-recover.out
@@ -1,7 +1,7 @@
WARNING: bad34.pdf: file is damaged
WARNING: bad34.pdf (object 4 0, file position 322): expected n n obj
WARNING: bad34.pdf: Attempting to reconstruct cross-reference table
-/QTest is indirect
+/QTest is indirect and has type stream (10)
/QTest is a stream. Dictionary: << /Length 44 /Quack 9 0 R >>
Raw stream data:
BT
diff --git a/qpdf/qtest/qpdf/bad4-recover.out b/qpdf/qtest/qpdf/bad4-recover.out
index 508acea5..2aa06fbe 100644
--- a/qpdf/qtest/qpdf/bad4-recover.out
+++ b/qpdf/qtest/qpdf/bad4-recover.out
@@ -2,7 +2,7 @@ WARNING: bad4.pdf: file is damaged
WARNING: bad4.pdf (xref table, file position 547): xref syntax invalid
WARNING: bad4.pdf: Attempting to reconstruct cross-reference table
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad5-recover.out b/qpdf/qtest/qpdf/bad5-recover.out
index 75fe746e..7a0fd69d 100644
--- a/qpdf/qtest/qpdf/bad5-recover.out
+++ b/qpdf/qtest/qpdf/bad5-recover.out
@@ -2,7 +2,7 @@ WARNING: bad5.pdf: file is damaged
WARNING: bad5.pdf (xref table, file position 591): invalid xref entry (obj=2)
WARNING: bad5.pdf: Attempting to reconstruct cross-reference table
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad6-recover.out b/qpdf/qtest/qpdf/bad6-recover.out
index 1d31025f..9a222c13 100644
--- a/qpdf/qtest/qpdf/bad6-recover.out
+++ b/qpdf/qtest/qpdf/bad6-recover.out
@@ -1,5 +1,5 @@
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad6.out b/qpdf/qtest/qpdf/bad6.out
index 26b50cb6..1d054ae5 100644
--- a/qpdf/qtest/qpdf/bad6.out
+++ b/qpdf/qtest/qpdf/bad6.out
@@ -1,5 +1,5 @@
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad8-recover.out b/qpdf/qtest/qpdf/bad8-recover.out
index f55a7948..59b3b8c8 100644
--- a/qpdf/qtest/qpdf/bad8-recover.out
+++ b/qpdf/qtest/qpdf/bad8-recover.out
@@ -2,7 +2,7 @@ WARNING: bad8.pdf: file is damaged
WARNING: bad8.pdf (file position 543): xref not found
WARNING: bad8.pdf: Attempting to reconstruct cross-reference table
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/bad9-recover.out b/qpdf/qtest/qpdf/bad9-recover.out
index f795a156..b9608d1b 100644
--- a/qpdf/qtest/qpdf/bad9-recover.out
+++ b/qpdf/qtest/qpdf/bad9-recover.out
@@ -2,7 +2,7 @@ WARNING: bad9.pdf: file is damaged
WARNING: bad9.pdf (trailer, file position 712): trailer dictionary lacks /Size key
WARNING: bad9.pdf: Attempting to reconstruct cross-reference table
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/good1.out b/qpdf/qtest/qpdf/good1.out
index 1d31025f..9a222c13 100644
--- a/qpdf/qtest/qpdf/good1.out
+++ b/qpdf/qtest/qpdf/good1.out
@@ -1,5 +1,5 @@
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/good10.out b/qpdf/qtest/qpdf/good10.out
index 3c0bed95..0ae08058 100644
--- a/qpdf/qtest/qpdf/good10.out
+++ b/qpdf/qtest/qpdf/good10.out
@@ -1,4 +1,4 @@
-/QTest is direct
+/QTest is direct and has type array (8)
/QTest is an array with 3 items
item 0 is direct
item 1 is direct
diff --git a/qpdf/qtest/qpdf/good11.out b/qpdf/qtest/qpdf/good11.out
index 676a0343..2079096a 100644
--- a/qpdf/qtest/qpdf/good11.out
+++ b/qpdf/qtest/qpdf/good11.out
@@ -1,4 +1,4 @@
-/QTest is direct
+/QTest is direct and has type dictionary (9)
/QTest is a dictionary
/a is direct
unparse: << /a (a) /b 8 0 R >>
diff --git a/qpdf/qtest/qpdf/good12.out b/qpdf/qtest/qpdf/good12.out
index b75d27b1..11cd7089 100644
--- a/qpdf/qtest/qpdf/good12.out
+++ b/qpdf/qtest/qpdf/good12.out
@@ -1,4 +1,4 @@
-/QTest is indirect
+/QTest is indirect and has type stream (10)
/QTest is a stream. Dictionary: << /Filter /FlateDecode /Length 123 >>
Raw stream data:
x%11 b;t4| wXID8G>rQu O E:IWPlII)rp4~;As/҅jcszT.?u<*6
diff --git a/qpdf/qtest/qpdf/good13.out b/qpdf/qtest/qpdf/good13.out
index a50358cb..7ff08b01 100644
--- a/qpdf/qtest/qpdf/good13.out
+++ b/qpdf/qtest/qpdf/good13.out
@@ -1,4 +1,4 @@
-/QTest is indirect
+/QTest is indirect and has type dictionary (9)
/QTest is a dictionary
/hex strings is direct
/indirect is indirect
diff --git a/qpdf/qtest/qpdf/good15.out b/qpdf/qtest/qpdf/good15.out
index 884ea6ed..8a670d11 100644
--- a/qpdf/qtest/qpdf/good15.out
+++ b/qpdf/qtest/qpdf/good15.out
@@ -1,4 +1,4 @@
-/QTest is direct
+/QTest is direct and has type name (7)
/QTest is a name with value /oink
unparse: /oink
unparseResolved: /oink
diff --git a/qpdf/qtest/qpdf/good16.out b/qpdf/qtest/qpdf/good16.out
index 1d31025f..9a222c13 100644
--- a/qpdf/qtest/qpdf/good16.out
+++ b/qpdf/qtest/qpdf/good16.out
@@ -1,5 +1,5 @@
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/good17.out b/qpdf/qtest/qpdf/good17.out
index 1d31025f..9a222c13 100644
--- a/qpdf/qtest/qpdf/good17.out
+++ b/qpdf/qtest/qpdf/good17.out
@@ -1,5 +1,5 @@
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/good18.out b/qpdf/qtest/qpdf/good18.out
index 1d31025f..9a222c13 100644
--- a/qpdf/qtest/qpdf/good18.out
+++ b/qpdf/qtest/qpdf/good18.out
@@ -1,5 +1,5 @@
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/good19.out b/qpdf/qtest/qpdf/good19.out
index 1d31025f..9a222c13 100644
--- a/qpdf/qtest/qpdf/good19.out
+++ b/qpdf/qtest/qpdf/good19.out
@@ -1,5 +1,5 @@
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/good2.out b/qpdf/qtest/qpdf/good2.out
index 1d31025f..9a222c13 100644
--- a/qpdf/qtest/qpdf/good2.out
+++ b/qpdf/qtest/qpdf/good2.out
@@ -1,5 +1,5 @@
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/good20.out b/qpdf/qtest/qpdf/good20.out
index 1d31025f..9a222c13 100644
--- a/qpdf/qtest/qpdf/good20.out
+++ b/qpdf/qtest/qpdf/good20.out
@@ -1,5 +1,5 @@
/QTest is implicit
-/QTest is direct
+/QTest is direct and has type null (2)
/QTest is null
unparse: null
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/good3.out b/qpdf/qtest/qpdf/good3.out
index 7982e109..a3afbfc0 100644
--- a/qpdf/qtest/qpdf/good3.out
+++ b/qpdf/qtest/qpdf/good3.out
@@ -1,5 +1,5 @@
/QTest is implicit
-/QTest is indirect
+/QTest is indirect and has type null (2)
/QTest is null
unparse: 7 0 R
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/good4.out b/qpdf/qtest/qpdf/good4.out
index 7982e109..a3afbfc0 100644
--- a/qpdf/qtest/qpdf/good4.out
+++ b/qpdf/qtest/qpdf/good4.out
@@ -1,5 +1,5 @@
/QTest is implicit
-/QTest is indirect
+/QTest is indirect and has type null (2)
/QTest is null
unparse: 7 0 R
unparseResolved: null
diff --git a/qpdf/qtest/qpdf/good5.out b/qpdf/qtest/qpdf/good5.out
index ff2e3fdf..db4239af 100644
--- a/qpdf/qtest/qpdf/good5.out
+++ b/qpdf/qtest/qpdf/good5.out
@@ -1,4 +1,4 @@
-/QTest is indirect
+/QTest is indirect and has type boolean (3)
/QTest is Boolean with value true
unparse: 7 0 R
unparseResolved: true
diff --git a/qpdf/qtest/qpdf/good6.out b/qpdf/qtest/qpdf/good6.out
index 17b498d1..3213c05a 100644
--- a/qpdf/qtest/qpdf/good6.out
+++ b/qpdf/qtest/qpdf/good6.out
@@ -1,4 +1,4 @@
-/QTest is direct
+/QTest is direct and has type boolean (3)
/QTest is Boolean with value false
unparse: false
unparseResolved: false
diff --git a/qpdf/qtest/qpdf/good7.out b/qpdf/qtest/qpdf/good7.out
index ab14fba0..5ea32052 100644
--- a/qpdf/qtest/qpdf/good7.out
+++ b/qpdf/qtest/qpdf/good7.out
@@ -1,4 +1,4 @@
-/QTest is direct
+/QTest is direct and has type integer (4)
/QTest is an integer with value 16059
unparse: 16059
unparseResolved: 16059
diff --git a/qpdf/qtest/qpdf/good8.out b/qpdf/qtest/qpdf/good8.out
index e631e46a..ae23605b 100644
--- a/qpdf/qtest/qpdf/good8.out
+++ b/qpdf/qtest/qpdf/good8.out
@@ -1,4 +1,4 @@
-/QTest is indirect
+/QTest is indirect and has type real (5)
/QTest is a real number with value 3.14159
unparse: 7 0 R
unparseResolved: 3.14159
diff --git a/qpdf/qtest/qpdf/good9.out b/qpdf/qtest/qpdf/good9.out
index 75c40bc9..c481133f 100644
--- a/qpdf/qtest/qpdf/good9.out
+++ b/qpdf/qtest/qpdf/good9.out
@@ -1,4 +1,4 @@
-/QTest is direct
+/QTest is direct and has type string (6)
/QTest is a string with value Hola!
unparse: (Hola!)
unparseResolved: (Hola!)
diff --git a/qpdf/test_driver.cc b/qpdf/test_driver.cc
index 3863cdbe..ec6fcff0 100644
--- a/qpdf/test_driver.cc
+++ b/qpdf/test_driver.cc
@@ -232,7 +232,9 @@ void runtest(int n, char const* filename1, char const* arg2)
qtest.isIndirect() ? 1 : 0);
std::cout << "/QTest is "
<< (qtest.isIndirect() ? "in" : "")
- << "direct" << std::endl;
+ << "direct and has type "
+ << qtest.getTypeName()
+ << " (" << qtest.getTypeCode() << ")" << std::endl;
if (qtest.isNull())
{