cpp/poppler-document.cpp | 4 ++-- glib/poppler-document.cc | 6 ++---- poppler/Form.cc | 2 +- poppler/PDFDoc.cc | 20 ++++++++++---------- poppler/PDFDoc.h | 6 +++--- qt5/tests/check_internal_outline.cpp | 16 ++++++++-------- qt6/tests/check_internal_outline.cpp | 16 ++++++++-------- test/pdf-fullrewrite.cc | 3 ++- utils/pdfattach.cc | 4 ++-- utils/pdfseparate.cc | 7 ++----- 10 files changed, 40 insertions(+), 44 deletions(-)
New commits: commit 47256c3c2905ade19f21224cb48ff5bb7de43a03 Author: Albert Astals Cid <[email protected]> Date: Tue Feb 15 16:44:20 2022 +0100 Change PDFDoc::save from pointer to reference Makes it clear it's not going to be destructed and that it can't be null diff --git a/cpp/poppler-document.cpp b/cpp/poppler-document.cpp index c4f52277..2dd47921 100644 --- a/cpp/poppler-document.cpp +++ b/cpp/poppler-document.cpp @@ -1025,7 +1025,7 @@ bool document::save(const std::string &file_name) const } GooString fname(file_name.c_str()); - return d->doc->saveAs(&fname) == errNone; + return d->doc->saveAs(fname) == errNone; } /** @@ -1040,7 +1040,7 @@ bool document::save_a_copy(const std::string &file_name) const } GooString fname(file_name.c_str()); - return d->doc->saveWithoutChangesAs(&fname) == errNone; + return d->doc->saveWithoutChangesAs(fname) == errNone; } /** diff --git a/glib/poppler-document.cc b/glib/poppler-document.cc index b6b455e2..29172833 100644 --- a/glib/poppler-document.cc +++ b/glib/poppler-document.cc @@ -582,13 +582,12 @@ gboolean poppler_document_save(PopplerDocument *document, const char *uri, GErro filename = g_filename_from_uri(uri, nullptr, error); if (filename != nullptr) { - GooString *fname = new GooString(filename); + GooString fname(filename); int err_code; g_free(filename); err_code = document->doc->saveAs(fname); retval = handle_save_error(err_code, error); - delete fname; } return retval; @@ -617,13 +616,12 @@ gboolean poppler_document_save_a_copy(PopplerDocument *document, const char *uri filename = g_filename_from_uri(uri, nullptr, error); if (filename != nullptr) { - GooString *fname = new GooString(filename); + GooString fname(filename); int err_code; g_free(filename); err_code = document->doc->saveWithoutChangesAs(fname); retval = handle_save_error(err_code, error); - delete fname; } return retval; diff --git a/poppler/Form.cc b/poppler/Form.cc index c3624240..d0f4bcc8 100644 --- a/poppler/Form.cc +++ b/poppler/Form.cc @@ -605,7 +605,7 @@ bool FormWidgetSignature::signDocument(const char *saveFilename, const char *cer // Incremental save to avoid breaking any existing signatures GooString *fname = new GooString(saveFilename); - if (doc->saveAs(fname, writeForceIncremental) != errNone) { + if (doc->saveAs(*fname, writeForceIncremental) != errNone) { fprintf(stderr, "signDocument: error saving to file \"%s\"\n", saveFilename); delete fname; return false; diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc index 3b382a5c..44163450 100644 --- a/poppler/PDFDoc.cc +++ b/poppler/PDFDoc.cc @@ -802,7 +802,7 @@ Hints *PDFDoc::getHints() return hints; } -int PDFDoc::savePageAs(const GooString *name, int pageNo) +int PDFDoc::savePageAs(const GooString &name, int pageNo) { FILE *f; OutStream *outStr; @@ -834,8 +834,8 @@ int PDFDoc::savePageAs(const GooString *name, int pageNo) Ref *refPage = getCatalog()->getPageRef(pageNo); Object page = getXRef()->fetch(*refPage); - if (!(f = openFile(name->c_str(), "wb"))) { - error(errIO, -1, "Couldn't open file '{0:t}'", name); + if (!(f = openFile(name.c_str(), "wb"))) { + error(errIO, -1, "Couldn't open file '{0:t}'", &name); return errOpenFile; } outStr = new FileOutStream(f, 0); @@ -946,7 +946,7 @@ int PDFDoc::savePageAs(const GooString *name, int pageNo) Ref ref; ref.num = rootNum; ref.gen = 0; - Object trailerDict = createTrailerDict(rootNum + 3, false, 0, &ref, getXRef(), name->c_str(), uxrefOffset); + Object trailerDict = createTrailerDict(rootNum + 3, false, 0, &ref, getXRef(), name.c_str(), uxrefOffset); writeXRefTableTrailer(std::move(trailerDict), yRef, false /* do not write unnecessary entries */, uxrefOffset, outStr, getXRef()); outStr->close(); @@ -958,14 +958,14 @@ int PDFDoc::savePageAs(const GooString *name, int pageNo) return errNone; } -int PDFDoc::saveAs(const GooString *name, PDFWriteMode mode) +int PDFDoc::saveAs(const GooString &name, PDFWriteMode mode) { FILE *f; OutStream *outStr; int res; - if (!(f = openFile(name->c_str(), "wb"))) { - error(errIO, -1, "Couldn't open file '{0:t}'", name); + if (!(f = openFile(name.c_str(), "wb"))) { + error(errIO, -1, "Couldn't open file '{0:t}'", &name); return errOpenFile; } outStr = new FileOutStream(f, 0); @@ -992,14 +992,14 @@ int PDFDoc::saveAs(OutStream *outStr, PDFWriteMode mode) return errNone; } -int PDFDoc::saveWithoutChangesAs(const GooString *name) +int PDFDoc::saveWithoutChangesAs(const GooString &name) { FILE *f; OutStream *outStr; int res; - if (!(f = openFile(name->c_str(), "wb"))) { - error(errIO, -1, "Couldn't open file '{0:t}'", name); + if (!(f = openFile(name.c_str(), "wb"))) { + error(errIO, -1, "Couldn't open file '{0:t}'", &name); return errOpenFile; } diff --git a/poppler/PDFDoc.h b/poppler/PDFDoc.h index d54bf7d9..3128674a 100644 --- a/poppler/PDFDoc.h +++ b/poppler/PDFDoc.h @@ -302,13 +302,13 @@ public: bool getID(GooString *permanent_id, GooString *update_id) const; // Save one page with another name. - int savePageAs(const GooString *name, int pageNo); + int savePageAs(const GooString &name, int pageNo); // Save this file with another name. - int saveAs(const GooString *name, PDFWriteMode mode = writeStandard); + int saveAs(const GooString &name, PDFWriteMode mode = writeStandard); // Save this file in the given output stream. int saveAs(OutStream *outStr, PDFWriteMode mode = writeStandard); // Save this file with another name without saving changes - int saveWithoutChangesAs(const GooString *name); + int saveWithoutChangesAs(const GooString &name); // Save this file in the given output stream without saving changes int saveWithoutChangesAs(OutStream *outStr); diff --git a/qt5/tests/check_internal_outline.cpp b/qt5/tests/check_internal_outline.cpp index 02342de5..c12b6041 100644 --- a/qt5/tests/check_internal_outline.cpp +++ b/qt5/tests/check_internal_outline.cpp @@ -40,7 +40,7 @@ void TestInternalOutline::testCreateOutline() outlineItems = outline->getItems(); // no items will result in a nullptr rather than a 0 length list QVERIFY(outlineItems == nullptr); - doc->saveAs(&gooTempFileName); + doc->saveAs(gooTempFileName); /******************************************************/ @@ -87,7 +87,7 @@ void TestInternalOutline::testSetOutline() { { "1", 1, { { "1.1", 1, {} }, { "1.2", 2, {} }, { "1.3", 3, { { "1.3.1", 1, {} }, { "1.3.2", 2, {} }, { "1.3.3", 3, {} }, { "1.3.4", 4, {} } } }, { "1.4", 4, {} } } }, { "2", 2, {} }, { "3", 3, {} }, { "4", 4, {} } }); outlineItems = outline->getItems(); QVERIFY(outlineItems != nullptr); - doc->saveAs(&gooTempFileName); + doc->saveAs(gooTempFileName); outline = nullptr; /******************************************************/ @@ -175,7 +175,7 @@ void TestInternalOutline::testInsertChild() // create an outline and save the file outline->setOutline({}); - doc->saveAs(&gooTempFileName); + doc->saveAs(gooTempFileName); outline = nullptr; /******************************************************/ @@ -207,7 +207,7 @@ void TestInternalOutline::testInsertChild() outlineItems->at(1)->insertChild("2.3", 2, 2); // save the file - doc->saveAs(&gooTempFileName2); + doc->saveAs(gooTempFileName2); outline = nullptr; /******************************************************/ @@ -282,7 +282,7 @@ void TestInternalOutline::testRemoveChild() { "4", 4, {} } }); outlineItems = outline->getItems(); QVERIFY(outlineItems != nullptr); - doc->saveAs(&gooTempFileName); + doc->saveAs(gooTempFileName); outline = nullptr; /******************************************************/ @@ -303,7 +303,7 @@ void TestInternalOutline::testRemoveChild() outline->getItems()->at(1)->removeChild(0); // save the file - doc->saveAs(&gooTempFileName2); + doc->saveAs(gooTempFileName2); outline = nullptr; /******************************************************/ @@ -376,7 +376,7 @@ void TestInternalOutline::testSetTitleAndSetPageDest() { "4", 4, {} } }); outlineItems = outline->getItems(); QVERIFY(outlineItems != nullptr); - doc->saveAs(&gooTempFileName); + doc->saveAs(gooTempFileName); outline = nullptr; @@ -407,7 +407,7 @@ void TestInternalOutline::testSetTitleAndSetPageDest() } // save the file - doc->saveAs(&gooTempFileName2); + doc->saveAs(gooTempFileName2); outline = nullptr; item = nullptr; diff --git a/qt6/tests/check_internal_outline.cpp b/qt6/tests/check_internal_outline.cpp index 02342de5..c12b6041 100644 --- a/qt6/tests/check_internal_outline.cpp +++ b/qt6/tests/check_internal_outline.cpp @@ -40,7 +40,7 @@ void TestInternalOutline::testCreateOutline() outlineItems = outline->getItems(); // no items will result in a nullptr rather than a 0 length list QVERIFY(outlineItems == nullptr); - doc->saveAs(&gooTempFileName); + doc->saveAs(gooTempFileName); /******************************************************/ @@ -87,7 +87,7 @@ void TestInternalOutline::testSetOutline() { { "1", 1, { { "1.1", 1, {} }, { "1.2", 2, {} }, { "1.3", 3, { { "1.3.1", 1, {} }, { "1.3.2", 2, {} }, { "1.3.3", 3, {} }, { "1.3.4", 4, {} } } }, { "1.4", 4, {} } } }, { "2", 2, {} }, { "3", 3, {} }, { "4", 4, {} } }); outlineItems = outline->getItems(); QVERIFY(outlineItems != nullptr); - doc->saveAs(&gooTempFileName); + doc->saveAs(gooTempFileName); outline = nullptr; /******************************************************/ @@ -175,7 +175,7 @@ void TestInternalOutline::testInsertChild() // create an outline and save the file outline->setOutline({}); - doc->saveAs(&gooTempFileName); + doc->saveAs(gooTempFileName); outline = nullptr; /******************************************************/ @@ -207,7 +207,7 @@ void TestInternalOutline::testInsertChild() outlineItems->at(1)->insertChild("2.3", 2, 2); // save the file - doc->saveAs(&gooTempFileName2); + doc->saveAs(gooTempFileName2); outline = nullptr; /******************************************************/ @@ -282,7 +282,7 @@ void TestInternalOutline::testRemoveChild() { "4", 4, {} } }); outlineItems = outline->getItems(); QVERIFY(outlineItems != nullptr); - doc->saveAs(&gooTempFileName); + doc->saveAs(gooTempFileName); outline = nullptr; /******************************************************/ @@ -303,7 +303,7 @@ void TestInternalOutline::testRemoveChild() outline->getItems()->at(1)->removeChild(0); // save the file - doc->saveAs(&gooTempFileName2); + doc->saveAs(gooTempFileName2); outline = nullptr; /******************************************************/ @@ -376,7 +376,7 @@ void TestInternalOutline::testSetTitleAndSetPageDest() { "4", 4, {} } }); outlineItems = outline->getItems(); QVERIFY(outlineItems != nullptr); - doc->saveAs(&gooTempFileName); + doc->saveAs(gooTempFileName); outline = nullptr; @@ -407,7 +407,7 @@ void TestInternalOutline::testSetTitleAndSetPageDest() } // save the file - doc->saveAs(&gooTempFileName2); + doc->saveAs(gooTempFileName2); outline = nullptr; item = nullptr; diff --git a/test/pdf-fullrewrite.cc b/test/pdf-fullrewrite.cc index 968f9569..1afc7e16 100644 --- a/test/pdf-fullrewrite.cc +++ b/test/pdf-fullrewrite.cc @@ -4,6 +4,7 @@ // // Copyright 2007 Julien Rebetez // Copyright 2012 Fabio D'Urso +// Copyright 2022 Albert Astals Cid <[email protected]> // //======================================================================== @@ -74,7 +75,7 @@ int main(int argc, char *argv[]) } // save it back (in rewrite or incremental update mode) - if (doc->saveAs(outputName, forceIncremental ? writeForceIncremental : writeForceRewrite) != 0) { + if (doc->saveAs(*outputName, forceIncremental ? writeForceIncremental : writeForceRewrite) != 0) { fprintf(stderr, "Error saving document\n"); res = 1; goto done; diff --git a/utils/pdfattach.cc b/utils/pdfattach.cc index d5b6f1b2..b839622f 100644 --- a/utils/pdfattach.cc +++ b/utils/pdfattach.cc @@ -4,7 +4,7 @@ // // This file is licensed under the GPLv2 or later // -// Copyright (C) 2019-2021 Albert Astals Cid <[email protected]> +// Copyright (C) 2019-2022 Albert Astals Cid <[email protected]> // Copyright (C) 2019 Oliver Sander <[email protected]> // // To see a description of the changes please see the Changelog file that @@ -95,7 +95,7 @@ int main(int argc, char *argv[]) doc->getCatalog()->addEmbeddedFile(attachFile.get(), attachFileName); const GooString outputPdfFilePath(argv[3]); - const int saveResult = doc->saveAs(&outputPdfFilePath); + const int saveResult = doc->saveAs(outputPdfFilePath); if (saveResult != errNone) { fprintf(stderr, "Couldn't save the file properly.\n"); return 5; diff --git a/utils/pdfseparate.cc b/utils/pdfseparate.cc index afe29cef..c0c84bb4 100644 --- a/utils/pdfseparate.cc +++ b/utils/pdfseparate.cc @@ -5,7 +5,7 @@ // This file is licensed under the GPLv2 or later // // Copyright (C) 2011, 2012, 2015 Thomas Freitag <[email protected]> -// Copyright (C) 2012-2014, 2017, 2018, 2021 Albert Astals Cid <[email protected]> +// Copyright (C) 2012-2014, 2017, 2018, 2021, 2022 Albert Astals Cid <[email protected]> // Copyright (C) 2013, 2016 Pino Toscano <[email protected]> // Copyright (C) 2013 Daniel Kahn Gillmor <[email protected]> // Copyright (C) 2013 Suzuki Toshiya <[email protected]> @@ -118,17 +118,14 @@ static bool extractPages(const char *srcFileName, const char *destFileName) for (int pageNo = firstPage; pageNo <= lastPage; pageNo++) { snprintf(pathName, sizeof(pathName) - 1, destFileName, pageNo); - GooString *gpageName = new GooString(pathName); PDFDoc *pagedoc = new PDFDoc(new GooString(srcFileName), nullptr, nullptr, nullptr); - int errCode = pagedoc->savePageAs(gpageName, pageNo); + int errCode = pagedoc->savePageAs(GooString(pathName), pageNo); if (errCode != errNone) { - delete gpageName; delete doc; delete pagedoc; return false; } delete pagedoc; - delete gpageName; } delete doc; return true;
