diff --git a/job.sums b/job.sums index fb4d7b4..6d4e6b4 100644 --- a/job.sums +++ b/job.sums @@ -16,6 +16,6 @@ libqpdf/qpdf/auto_job_json_decl.hh 7dbb83ddadcea39bfd1faa4ca061e1e3c3134d693b8ae libqpdf/qpdf/auto_job_json_init.hh e9cacbcb78ca250a962c226a935067ef9b76f5485bae7e5302eea0a1a8e2ff65 libqpdf/qpdf/auto_job_schema.hh 2b974a436c5b4d03fb38258d6213f993cfa9f673834cebe754b4c7ad657481c9 manual/_ext/qpdf.py 6add6321666031d55ed4aedf7c00e5662bba856dfcd66ccb526563bffefbb580 -manual/cli.rst 0b0f6a1d8ec523751d91999586bca1356abd8f17e207bc0139ce5d7dfd64fdb4 +manual/cli.rst be2b9366e953fce743c115db00eeedc7894e547a9222133395e929f535fa9836 manual/qpdf.1 c1d6e58e37aed1b8d434b37edd1837b7261c9933b09d64bf3915dc3f35d6cccb manual/qpdf.1.in 436ecc85d45c4c9e2dbd1725fb7f0177fb627179469f114561adf3cb6cbb677b diff --git a/libqpdf/QPDF_json.cc b/libqpdf/QPDF_json.cc index e2417ec..baf870a 100644 --- a/libqpdf/QPDF_json.cc +++ b/libqpdf/QPDF_json.cc @@ -146,13 +146,13 @@ is_binary_string(std::string const& v, std::string& str) static bool is_name(std::string const& v) { - return ((v.length() > 1) && (v.at(0) == '/')); + return v.starts_with('/'); } static bool is_pdf_name(std::string const& v) { - return ((v.length() > 3) && (v.substr(0, 3) == "n:/")); + return v.starts_with("n:/"); } bool @@ -203,10 +203,15 @@ QPDF::test_json_validators() check(is_binary_string("b:12", str)); check(is_binary_string("b:123aBC", str)); check(!is_name("")); - check(!is_name("/")); + check(is_name("/")); check(!is_name("xyz")); check(is_name("/Potato")); check(is_name("/Potato Salad")); + check(!is_pdf_name("n:")); + check(is_pdf_name("n:/")); + check(!is_pdf_name("n:xyz")); + check(is_pdf_name("n:/Potato")); + check(is_pdf_name("n:/Potato Salad")); return passed; #undef check_arg diff --git a/manual/release-notes.rst b/manual/release-notes.rst index ad0c8a2..655a0a4 100644 --- a/manual/release-notes.rst +++ b/manual/release-notes.rst @@ -40,6 +40,9 @@ more detail. flag was only set to true if the field is not a top-level field, and remained unchanged otherwise. + - When parsing qpdf JSON input files allow empty name objects. These are + allowed by the PDF specification but were previously rejected. + - Library Enhancements - Add ``QPDFNameTreeObjectHelper`` and ``QPDFNumberTreeObjectHelper``