Commit 4b3bed2b56136fdae62c25432efc0c9d41ffd4ff
1 parent
fd52eae8
Refactor `qpdf-c` object handle management: replace `shared_ptr` with direct `QP…
…DFObjectHandle` storage, remove unused trace calls, and streamline invalid handle checks.
Showing
3 changed files
with
6 additions
and
17 deletions
libqpdf/qpdf-c.cc
| ... | ... | @@ -833,28 +833,25 @@ static qpdf_oh |
| 833 | 833 | new_object(qpdf_data qpdf, QPDFObjectHandle const& qoh) |
| 834 | 834 | { |
| 835 | 835 | qpdf_oh oh = ++qpdf->next_oh; // never return 0 |
| 836 | - qpdf->oh_cache[oh] = std::make_shared<QPDFObjectHandle>(qoh); | |
| 836 | + qpdf->oh_cache[oh] = qoh; | |
| 837 | 837 | return oh; |
| 838 | 838 | } |
| 839 | 839 | |
| 840 | 840 | qpdf_oh |
| 841 | 841 | qpdf_oh_new_object(qpdf_data qpdf, qpdf_oh oh) |
| 842 | 842 | { |
| 843 | - QTC::TC("qpdf", "qpdf-c called qpdf_new_object"); | |
| 844 | - return new_object(qpdf, *(qpdf->oh_cache[oh])); | |
| 843 | + return new_object(qpdf, qpdf->oh_cache[oh]); | |
| 845 | 844 | } |
| 846 | 845 | |
| 847 | 846 | void |
| 848 | 847 | qpdf_oh_release(qpdf_data qpdf, qpdf_oh oh) |
| 849 | 848 | { |
| 850 | - QTC::TC("qpdf", "qpdf-c called qpdf_oh_release"); | |
| 851 | 849 | qpdf->oh_cache.erase(oh); |
| 852 | 850 | } |
| 853 | 851 | |
| 854 | 852 | void |
| 855 | 853 | qpdf_oh_release_all(qpdf_data qpdf) |
| 856 | 854 | { |
| 857 | - QTC::TC("qpdf", "qpdf-c called qpdf_oh_release_all"); | |
| 858 | 855 | qpdf->oh_cache.clear(); |
| 859 | 856 | } |
| 860 | 857 | |
| ... | ... | @@ -904,8 +901,7 @@ qpdf_get_root(qpdf_data qpdf) |
| 904 | 901 | qpdf_oh |
| 905 | 902 | qpdf_get_object_by_id(qpdf_data qpdf, int objid, int generation) |
| 906 | 903 | { |
| 907 | - QTC::TC("qpdf", "qpdf-c called qpdf_get_object_by_id"); | |
| 908 | - return new_object(qpdf, qpdf->qpdf->getObjectByID(objid, generation)); | |
| 904 | + return new_object(qpdf, qpdf->qpdf->getObject(objid, generation)); | |
| 909 | 905 | } |
| 910 | 906 | |
| 911 | 907 | template <class RET> |
| ... | ... | @@ -918,9 +914,7 @@ do_with_oh( |
| 918 | 914 | { |
| 919 | 915 | return trap_oh_errors<RET>(qpdf, fallback, [fn, oh](qpdf_data q) { |
| 920 | 916 | auto i = q->oh_cache.find(oh); |
| 921 | - bool result = ((i != q->oh_cache.end()) && (i->second).get()); | |
| 922 | - if (!result) { | |
| 923 | - QTC::TC("qpdf", "qpdf-c invalid object handle"); | |
| 917 | + if (i == q->oh_cache.end()) { | |
| 924 | 918 | throw QPDFExc( |
| 925 | 919 | qpdf_e_internal, |
| 926 | 920 | q->qpdf->getFilename(), |
| ... | ... | @@ -928,7 +922,7 @@ do_with_oh( |
| 928 | 922 | 0, |
| 929 | 923 | "attempted access to unknown object handle"); |
| 930 | 924 | } |
| 931 | - return fn(*(q->oh_cache[oh])); | |
| 925 | + return fn(i->second); | |
| 932 | 926 | }); |
| 933 | 927 | } |
| 934 | 928 | ... | ... |
libqpdf/qpdf/qpdf-c_impl.hh
| ... | ... | @@ -39,7 +39,7 @@ struct _qpdf_data |
| 39 | 39 | // QPDFObjectHandle support |
| 40 | 40 | bool silence_errors{false}; |
| 41 | 41 | bool oh_error_occurred{false}; |
| 42 | - std::map<qpdf_oh, std::shared_ptr<QPDFObjectHandle>> oh_cache; | |
| 42 | + std::map<qpdf_oh, QPDFObjectHandle> oh_cache; | |
| 43 | 43 | qpdf_oh next_oh{0}; |
| 44 | 44 | std::set<std::string> cur_iter_dict_keys; |
| 45 | 45 | std::set<std::string>::const_iterator dict_iter; | ... | ... |
qpdf/qpdf.testcov
| ... | ... | @@ -263,10 +263,6 @@ QPDFJob found shared resources in leaf 0 |
| 263 | 263 | QPDFJob found shared xobject in leaf 0 |
| 264 | 264 | QPDFObjectHandle need_newline 1 |
| 265 | 265 | QPDFJob pages range omitted with . 0 |
| 266 | -qpdf-c invalid object handle 0 | |
| 267 | -qpdf-c called qpdf_oh_release 0 | |
| 268 | -qpdf-c called qpdf_oh_release_all 0 | |
| 269 | -qpdf-c called qpdf_new_object 0 | |
| 270 | 266 | qpdf-c called qpdf_get_trailer 0 |
| 271 | 267 | qpdf-c called qpdf_get_root 0 |
| 272 | 268 | qpdf-c called qpdf_oh_is_bool 0 |
| ... | ... | @@ -365,7 +361,6 @@ qpdf-c registered progress reporter 0 |
| 365 | 361 | qpdf-c called qpdf_oh_new_uninitialized 0 |
| 366 | 362 | qpdf-c warn about oh error 1 |
| 367 | 363 | qpdf-c cleanup warned about unhandled error 0 |
| 368 | -qpdf-c called qpdf_get_object_by_id 0 | |
| 369 | 364 | qpdf-c called qpdf_replace_object 0 |
| 370 | 365 | qpdf-c called qpdf_update_all_pages_cache 0 |
| 371 | 366 | qpdf-c called qpdf_find_page_by_id 0 | ... | ... |