mirror of
https://github.com/qpdf/qpdf.git
synced 2024-11-08 22:31:09 +00:00
dba61da1bf
When a QPDF is destroyed, changing indirect objects to direct nulls makes them effectively disappear silently when they sneak into other places. Instead, we should treat this as an error. Adding a destroyed object type makes this possible.
40 lines
831 B
C++
40 lines
831 B
C++
#include <qpdf/QPDF_Destroyed.hh>
|
|
|
|
#include <stdexcept>
|
|
|
|
QPDF_Destroyed::QPDF_Destroyed() :
|
|
QPDFValue(::ot_destroyed, "destroyed")
|
|
{
|
|
}
|
|
|
|
std::shared_ptr<QPDFValue>
|
|
QPDF_Destroyed::getInstance()
|
|
{
|
|
static std::shared_ptr<QPDFValue> instance(new QPDF_Destroyed());
|
|
return instance;
|
|
}
|
|
|
|
std::shared_ptr<QPDFValueProxy>
|
|
QPDF_Destroyed::shallowCopy()
|
|
{
|
|
throw std::logic_error(
|
|
"attempted to shallow copy QPDFObjectHandle from destroyed QPDF");
|
|
return nullptr;
|
|
}
|
|
|
|
std::string
|
|
QPDF_Destroyed::unparse()
|
|
{
|
|
throw std::logic_error(
|
|
"attempted to unparse a QPDFObjectHandle from a destroyed QPDF");
|
|
return "";
|
|
}
|
|
|
|
JSON
|
|
QPDF_Destroyed::getJSON(int json_version)
|
|
{
|
|
throw std::logic_error(
|
|
"attempted to get JSON from a QPDFObjectHandle from a destroyed QPDF");
|
|
return JSON::makeNull();
|
|
}
|