diff options
author | m-holger <m-holger@kubitscheck.org> | 2023-02-05 19:39:30 +0100 |
---|---|---|
committer | m-holger <m-holger@kubitscheck.org> | 2023-02-19 13:05:53 +0100 |
commit | a4f3dddb79e875bae74b8d4f3ebd6a94076e8a9e (patch) | |
tree | 2e9743e6df99c138ff717e47e9ef3eb2750a56b5 /libqpdf | |
parent | b4c36d9b73bc9794ea70d935448b8555630c3004 (diff) | |
download | qpdf-a4f3dddb79e875bae74b8d4f3ebd6a94076e8a9e.tar.zst |
Change JSON_dictionary and JSON_array to store JSON objects rather than std::shared_ptr<JSON_value>
Recognise that JSON objects are effectively shared pointers to JSON_value.
Diffstat (limited to 'libqpdf')
-rw-r--r-- | libqpdf/JSON.cc | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/libqpdf/JSON.cc b/libqpdf/JSON.cc index 76db652b..a5df6b91 100644 --- a/libqpdf/JSON.cc +++ b/libqpdf/JSON.cc @@ -322,9 +322,9 @@ JSON::addArrayElement(JSON const& val) throw std::runtime_error("JSON::addArrayElement called on non-array"); } if (val.m->value.get()) { - arr->elements.push_back(val.m->value); + arr->elements.push_back(val); } else { - arr->elements.push_back(std::make_shared<JSON_null>()); + arr->elements.push_back(makeNull()); } return arr->elements.back(); } @@ -504,11 +504,11 @@ JSON::checkSchemaInternal( } if (sch_dict && (!pattern_key.empty())) { - auto pattern_schema = sch_dict->members[pattern_key].get(); + auto pattern_schema = sch_dict->members[pattern_key].m->value.get(); for (auto const& iter: this_dict->members) { std::string const& key = iter.first; checkSchemaInternal( - this_dict->members[key].get(), + this_dict->members[key].m->value.get(), pattern_schema, flags, errors, @@ -519,8 +519,8 @@ JSON::checkSchemaInternal( std::string const& key = iter.first; if (this_dict->members.count(key)) { checkSchemaInternal( - this_dict->members[key].get(), - iter.second.get(), + this_dict->members[key].m->value.get(), + iter.second.m->value.get(), flags, errors, prefix + "." + key); @@ -557,8 +557,8 @@ JSON::checkSchemaInternal( int i = 0; for (auto const& element: this_arr->elements) { checkSchemaInternal( - element.get(), - sch_arr->elements.at(0).get(), + element.m->value.get(), + sch_arr->elements.at(0).m->value.get(), flags, errors, prefix + "." + std::to_string(i)); @@ -568,7 +568,7 @@ JSON::checkSchemaInternal( QTC::TC("libtests", "JSON schema array for single item"); checkSchemaInternal( this_v, - sch_arr->elements.at(0).get(), + sch_arr->elements.at(0).m->value.get(), flags, errors, prefix); @@ -587,8 +587,8 @@ JSON::checkSchemaInternal( size_t i = 0; for (auto const& element: this_arr->elements) { checkSchemaInternal( - element.get(), - sch_arr->elements.at(i).get(), + element.m->value.get(), + sch_arr->elements.at(i).m->value.get(), flags, errors, prefix + "." + std::to_string(i)); |