poppler/Annot.cc | 8 ++++---- poppler/AnnotStampImageHelper.cc | 3 ++- poppler/Catalog.cc | 9 ++++----- poppler/FileSpec.cc | 5 ++--- poppler/Form.cc | 2 +- poppler/Outline.cc | 4 ++-- poppler/PDFDoc.cc | 2 +- poppler/Page.cc | 6 +++--- poppler/XRef.cc | 9 ++++----- poppler/XRef.h | 2 +- 10 files changed, 24 insertions(+), 26 deletions(-)
New commits: commit 14aca8b62d197db6bcbc92faf7f398ac9a598011 Author: Albert Astals Cid <[email protected]> Date: Mon Nov 22 17:04:55 2021 +0100 XRef::addIndirectObject: Change param from const * to const & Makes it harder to do mistakes when using it diff --git a/poppler/Annot.cc b/poppler/Annot.cc index 6d1a2aea..f3f6a8e0 100644 --- a/poppler/Annot.cc +++ b/poppler/Annot.cc @@ -1206,7 +1206,7 @@ Annot::Annot(PDFDoc *docA, PDFRectangle *rectA) annotObj.dictSet("Type", Object(objName, "Annot")); annotObj.dictSet("Rect", Object(a)); - ref = docA->getXRef()->addIndirectObject(&annotObj); + ref = docA->getXRef()->addIndirectObject(annotObj); initialize(docA, annotObj.getDict()); } @@ -1983,7 +1983,7 @@ void Annot::setNewAppearance(Object &&newAppearance) invalidateAppearance(); appearance = std::move(newAppearance); - Ref updatedAppearanceStream = doc->getXRef()->addIndirectObject(&appearance); + Ref updatedAppearanceStream = doc->getXRef()->addIndirectObject(appearance); Object obj1 = Object(new Dict(doc->getXRef())); obj1.dictAdd("N", Object(updatedAppearanceStream)); @@ -5177,7 +5177,7 @@ void AnnotWidget::updateAppearanceStream() // Otherwise, just update the stream we had created previously. if (updatedAppearanceStream == Ref::INVALID()) { // Write the appearance stream - updatedAppearanceStream = doc->getXRef()->addIndirectObject(&obj1); + updatedAppearanceStream = doc->getXRef()->addIndirectObject(obj1); // Write the AP dictionary obj1 = Object(new Dict(doc->getXRef())); @@ -5596,7 +5596,7 @@ void AnnotStamp::setCustomImage(AnnotStampImageHelper *stampImageHelperA) generateStampCustomAppearance(); if (updatedAppearanceStream == Ref::INVALID()) { - updatedAppearanceStream = doc->getXRef()->addIndirectObject(&appearance); + updatedAppearanceStream = doc->getXRef()->addIndirectObject(appearance); } else { Object obj1 = appearance.fetch(doc->getXRef()); doc->getXRef()->setModifiedObject(&obj1, updatedAppearanceStream); diff --git a/poppler/AnnotStampImageHelper.cc b/poppler/AnnotStampImageHelper.cc index d761f9d8..4a345283 100644 --- a/poppler/AnnotStampImageHelper.cc +++ b/poppler/AnnotStampImageHelper.cc @@ -3,6 +3,7 @@ // AnnotStampImageHelper.cc // // Copyright (C) 2021 Mahmoud Ahmed Khalil <[email protected]> +// Copyright (C) 2021 Albert Astals Cid <[email protected]> // // Licensed under GPLv2 or later // @@ -65,7 +66,7 @@ void AnnotStampImageHelper::initialize(PDFDoc *docA, int widthA, int heightA, Co Stream *dataStream = new AutoFreeMemStream(dataCopied, 0, dataLength, Object(dict)); imgObj = Object(dataStream); - ref = doc->getXRef()->addIndirectObject(&imgObj); + ref = doc->getXRef()->addIndirectObject(imgObj); } void AnnotStampImageHelper::removeAnnotStampImageObject() diff --git a/poppler/Catalog.cc b/poppler/Catalog.cc index 29e93b5b..20cfa8d9 100644 --- a/poppler/Catalog.cc +++ b/poppler/Catalog.cc @@ -463,8 +463,7 @@ void Catalog::addEmbeddedFile(GooFile *file, const std::string &fileName) { catalogLocker(); - Object fileSpecObj = FileSpec::newFileSpecObject(xref, file, fileName); - const Ref fileSpecRef = xref->addIndirectObject(&fileSpecObj); + const Ref fileSpecRef = xref->addIndirectObject(FileSpec::newFileSpecObject(xref, file, fileName)); Object catDict = xref->getCatalog(); Ref namesObjRef; @@ -482,7 +481,7 @@ void Catalog::addEmbeddedFile(GooFile *file, const std::string &fileName) // We create a new EmbeddedFiles nametree, this replaces the existing one (if any), but it's not a problem Object embeddedFilesObj = Object(new Dict(xref)); - const Ref embeddedFilesRef = xref->addIndirectObject(&embeddedFilesObj); + const Ref embeddedFilesRef = xref->addIndirectObject(embeddedFilesObj); Array *embeddedFilesNamesArray = new Array(xref); @@ -981,7 +980,7 @@ Object *Catalog::getCreateOutline() outline.dictSet("Type", Object(objName, "Outlines")); outline.dictSet("Count", Object(0)); - const Ref outlineRef = doc->getXRef()->addIndirectObject(&outline); + const Ref outlineRef = doc->getXRef()->addIndirectObject(outline); catDict.dictAdd("Outlines", Object(outlineRef)); xref->setModifiedObject(&catDict, { xref->getRootNum(), xref->getRootGen() }); @@ -1068,7 +1067,7 @@ void Catalog::addFormToAcroForm(const Ref formRef) fieldArray->add(Object(formRef)); newForm.dictSet("Fields", Object(fieldArray)); - Ref newRef = xref->addIndirectObject(&newForm); + Ref newRef = xref->addIndirectObject(newForm); catDict.dictSet("AcroForm", Object(newRef)); acroForm = catDict.getDict()->lookup("AcroForm"); } else { diff --git a/poppler/FileSpec.cc b/poppler/FileSpec.cc index 53f9384c..590f9291 100644 --- a/poppler/FileSpec.cc +++ b/poppler/FileSpec.cc @@ -7,7 +7,7 @@ // // Copyright (C) 2008-2009 Carlos Garcia Campos <[email protected]> // Copyright (C) 2009 Kovid Goyal <[email protected]> -// Copyright (C) 2012, 2017-2020 Albert Astals Cid <[email protected]> +// Copyright (C) 2012, 2017-2021 Albert Astals Cid <[email protected]> // Copyright (C) 2012 Hib Eris <[email protected]> // Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, <[email protected]>. Work sponsored by the LiMux project of the city of Munich // Copyright (C) 2018 Adam Reichold <[email protected]> @@ -181,8 +181,7 @@ Object FileSpec::newFileSpecObject(XRef *xref, GooFile *file, const std::string FileStream *fStream = new FileStream(file, 0, false, file->size(), std::move(streamDict)); fStream->setNeedsEncryptionOnSave(true); Stream *stream = fStream; - Object streamObj = Object(stream); - const Ref streamRef = xref->addIndirectObject(&streamObj); + const Ref streamRef = xref->addIndirectObject(Object(stream)); Dict *efDict = new Dict(xref); efDict->set("F", Object(streamRef)); diff --git a/poppler/Form.cc b/poppler/Form.cc index 46ed2cc9..9bef701c 100644 --- a/poppler/Form.cc +++ b/poppler/Form.cc @@ -596,7 +596,7 @@ bool FormWidgetSignature::signDocument(const char *saveFilename, const char *cer updateWidgetAppearance(); // add visible signing info to appearance Object vObj(new Dict(xref)); - Ref vref = xref->addIndirectObject(&vObj); + Ref vref = xref->addIndirectObject(vObj); if (!createSignature(vObj, vref, GooString(signerName), tmpSignature.get(), reason, location)) { return false; } diff --git a/poppler/Outline.cc b/poppler/Outline.cc index 268dcaf3..74c72d67 100644 --- a/poppler/Outline.cc +++ b/poppler/Outline.cc @@ -105,7 +105,7 @@ static void insertChildHelper(const std::string &itemTitle, int destPageNum, uns Object prevItemObject; Object nextItemObject; - Ref outlineItemRef = xref->addIndirectObject(&outlineItem); + Ref outlineItemRef = xref->addIndirectObject(outlineItem); // the next two statements fix up the parent object // for clarity we separate this out @@ -294,7 +294,7 @@ int Outline::addOutlineTreeNodeList(const std::vector<OutlineTreeNode> &nodeList a->add(Object(objName, "Fit")); Object outlineItem = Object(new Dict(doc->getXRef())); - Ref outlineItemRef = doc->getXRef()->addIndirectObject(&outlineItem); + Ref outlineItemRef = doc->getXRef()->addIndirectObject(outlineItem); if (firstRef == Ref::INVALID()) { firstRef = outlineItemRef; diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc index e75d6405..ea8e391d 100644 --- a/poppler/PDFDoc.cc +++ b/poppler/PDFDoc.cc @@ -2159,7 +2159,7 @@ bool PDFDoc::sign(const char *saveFilename, const char *certNickname, const char GooString *daStr = da.toAppearanceString(); annotObj.dictSet("DA", Object(daStr)); - const Ref ref = getXRef()->addIndirectObject(&annotObj); + const Ref ref = getXRef()->addIndirectObject(annotObj); catalog->addFormToAcroForm(ref); std::unique_ptr<::FormFieldSignature> field = std::make_unique<::FormFieldSignature>(this, Object(annotObj.getDict()), ref, nullptr, nullptr); diff --git a/poppler/Page.cc b/poppler/Page.cc index ae77d45b..33da9049 100644 --- a/poppler/Page.cc +++ b/poppler/Page.cc @@ -431,10 +431,10 @@ void Page::addAnnot(Annot *annot) // page doesn't have annots array, // we have to create it - Object obj1 = Object(new Array(xref)); - obj1.arrayAdd(Object(annotRef)); + Array *annotsArray = new Array(xref); + annotsArray->add(Object(annotRef)); - annotsRef = xref->addIndirectObject(&obj1); + annotsRef = xref->addIndirectObject(Object(annotsArray)); annotsObj = Object(annotsRef); pageObj.dictSet("Annots", Object(annotsRef)); xref->setModifiedObject(&pageObj, pageRef); diff --git a/poppler/XRef.cc b/poppler/XRef.cc index 46433285..58ca7d27 100644 --- a/poppler/XRef.cc +++ b/poppler/XRef.cc @@ -1295,7 +1295,7 @@ Object XRef::createDocInfoIfNeeded(Ref *ref) removeDocInfo(); obj = Object(new Dict(this)); - *ref = addIndirectObject(&obj); + *ref = addIndirectObject(obj); trailerDict.dictSet("Info", Object(*ref)); return obj; @@ -1404,7 +1404,7 @@ void XRef::setModifiedObject(const Object *o, Ref r) setModified(); } -Ref XRef::addIndirectObject(const Object *o) +Ref XRef::addIndirectObject(const Object &o) { int entryIndexToUse = -1; for (int i = 1; entryIndexToUse == -1 && i < size; ++i) { @@ -1426,7 +1426,7 @@ Ref XRef::addIndirectObject(const Object *o) // incremented when the object was deleted } e->type = xrefEntryUncompressed; - e->obj = o->copy(); + e->obj = o.copy(); e->setFlag(XRefEntry::Updated, true); setModified(); @@ -1461,8 +1461,7 @@ Ref XRef::addStreamObject(Dict *dict, char *buffer, const Goffset bufferSize) dict->add("Length", Object((int)bufferSize)); AutoFreeMemStream *stream = new AutoFreeMemStream(buffer, 0, bufferSize, Object(dict)); stream->setFilterRemovalForbidden(true); - Object streamObj((Stream *)stream); - return addIndirectObject(&streamObj); + return addIndirectObject(Object((Stream *)stream)); } Ref XRef::addStreamObject(Dict *dict, uint8_t *buffer, const Goffset bufferSize) diff --git a/poppler/XRef.h b/poppler/XRef.h index a40c7312..05fce5b9 100644 --- a/poppler/XRef.h +++ b/poppler/XRef.h @@ -205,7 +205,7 @@ public: // Write access void setModifiedObject(const Object *o, Ref r); - Ref addIndirectObject(const Object *o); + Ref addIndirectObject(const Object &o); void removeIndirectObject(Ref r); void add(int num, int gen, Goffset offs, bool used); void add(Ref ref, Goffset offs, bool used);
