diff --git a/src/pdf/popplerdirect/PdfExport.cpp b/src/pdf/popplerdirect/PdfExport.cpp index ff1392f4..9103439d 100644 --- a/src/pdf/popplerdirect/PdfExport.cpp +++ b/src/pdf/popplerdirect/PdfExport.cpp @@ -284,8 +284,7 @@ void PdfExport::writeGzStream(Stream* str, GList* replacementList) { XOJ_CHECK_TYPE(PdfExport); - Object obj1; - str->getDict()->lookup("Length", &obj1); + Object obj1 = str->getDict()->lookup("Length"); if (!obj1.isInt()) { g_error("PDFDoc::writeGzStream, no Length in stream dict"); @@ -293,7 +292,6 @@ void PdfExport::writeGzStream(Stream* str, GList* replacementList) } const int length = obj1.getInt(); - obj1.free(); char* buffer = new char[length]; @@ -315,8 +313,7 @@ void PdfExport::writePlainStream(Stream* str, GList* replacementList) { XOJ_CHECK_TYPE(PdfExport); - Object obj1; - str->getDict()->lookup("Length", &obj1); + Object obj1 = str->getDict()->lookup("Length"); if (!obj1.isInt()) { g_error("PDFDoc::writePlainStream, no Length in stream dict"); @@ -324,7 +321,6 @@ void PdfExport::writePlainStream(Stream* str, GList* replacementList) } const int length = obj1.getInt(); - obj1.free(); str->unfilteredReset(); @@ -475,15 +471,13 @@ bool PdfExport::addPopplerPage(XojPopplerPage* pdf, XojPopplerDocument doc) } - Object* o = new Object(); - page->getContents(o); + Object* o = new Object(page->getContents()); if (o->getType() == objStream) { Dict* dict = o->getStream()->getDict(); - Object filter; - dict->lookup("Filter", &filter); + Object filter = dict->lookup("Filter"); // // this may would be better, but not working...:-/ // Object oDict; // oDict.initDict(dict); @@ -509,14 +503,12 @@ bool PdfExport::addPopplerPage(XojPopplerPage* pdf, XojPopplerDocument doc) //g_warning("Array length is %i\n",arrLength); for (int i = 0; i < arrLength; i++) { - Object* subObject = new Object; - o->arrayGet(i, subObject); + Object* subObject = new Object(o->arrayGet(i)); if (subObject->getType() == objStream) { Dict* dict = subObject->getStream()->getDict(); - Object filter; - dict->lookup("Filter", &filter); + Object filter = dict->lookup("Filter"); if (filter.isNull()) { @@ -535,7 +527,6 @@ bool PdfExport::addPopplerPage(XojPopplerPage* pdf, XojPopplerDocument doc) { g_warning("other poppler type: %i\n", subObject->getType()); } - subObject->free(); delete subObject; } } @@ -551,7 +542,6 @@ bool PdfExport::addPopplerPage(XojPopplerPage* pdf, XojPopplerDocument doc) } g_list_free(replacementList); - o->free(); delete o; this->resources = NULL; diff --git a/src/pdf/popplerdirect/PdfObjectWriter.cpp b/src/pdf/popplerdirect/PdfObjectWriter.cpp index c36f03eb..67cbea64 100644 --- a/src/pdf/popplerdirect/PdfObjectWriter.cpp +++ b/src/pdf/popplerdirect/PdfObjectWriter.cpp @@ -103,8 +103,8 @@ void PdfObjectWriter::writeObject(Object* obj, XojPopplerDocument doc) this->writer->write("["); for (int i = 0; i < array->getLength(); i++) { - writeObject(array->getNF(i, &obj1), doc); - obj1.free(); + obj1 = array->getNF(i); + writeObject(&obj1, doc); } this->writer->write("] "); break; @@ -126,8 +126,7 @@ void PdfObjectWriter::writeObject(Object* obj, XojPopplerDocument doc) { tmp++; } - obj1.initInt(tmp); - stream->getDict()->set("Length", &obj1); + stream->getDict()->set("Length", Object(tmp)); //Remove Stream encoding stream->getDict()->remove("Filter"); @@ -135,7 +134,6 @@ void PdfObjectWriter::writeObject(Object* obj, XojPopplerDocument doc) writeDictionnary(stream->getDict(), doc); writeStream(stream); - obj1.free(); } else { @@ -159,7 +157,7 @@ void PdfObjectWriter::writeObject(Object* obj, XojPopplerDocument doc) this->xref->addXref(0); this->writer->write(FORMAT("%i %i R ", uref->objectId, 0)); - obj->fetch(doc.getDoc()->getXRef(), &uref->object); + uref->object = obj->fetch(doc.getDoc()->getXRef()); g_hash_table_insert(this->updatedReferenced, new UpdateRefKey(obj->getRef(), doc), uref); } @@ -187,8 +185,7 @@ void PdfObjectWriter::writeRawStream(Stream* str, XojPopplerDocument doc) { XOJ_CHECK_TYPE(PdfObjectWriter); - Object obj1; - str->getDict()->lookup("Length", &obj1); + Object obj1 = str->getDict()->lookup("Length"); if (!obj1.isInt()) { cout << "PDFDoc::writeRawStream, no Length in stream dict"; @@ -196,7 +193,6 @@ void PdfObjectWriter::writeRawStream(Stream* str, XojPopplerDocument doc) } const int length = obj1.getInt(); - obj1.free(); this->writer->write("stream\r\n"); str->unfilteredReset(); @@ -230,7 +226,7 @@ void PdfObjectWriter::writeDictionnary(Dict* dict, XojPopplerDocument doc) { XOJ_CHECK_TYPE(PdfObjectWriter); - Object obj1; + Object obj; this->writer->write("<<"); for (int i = 0; i < dict->getLength(); i++) { @@ -238,8 +234,8 @@ void PdfObjectWriter::writeDictionnary(Dict* dict, XojPopplerDocument doc) GooString* keyNameToPrint = keyName.sanitizedName(gFalse /* non ps mode */); this->writer->write(FORMAT("/%s ", keyNameToPrint->getCString())); delete keyNameToPrint; - writeObject(dict->getValNF(i, &obj1), doc); - obj1.free(); + obj = Object(dict->getValNF(i)); + writeObject(&obj, doc); } this->writer->write(">> "); } diff --git a/src/pdf/popplerdirect/PdfRefList.cpp b/src/pdf/popplerdirect/PdfRefList.cpp index fafd6158..f12acccc 100644 --- a/src/pdf/popplerdirect/PdfRefList.cpp +++ b/src/pdf/popplerdirect/PdfRefList.cpp @@ -79,7 +79,6 @@ int PdfRefList::lookup(Ref ref, Object* object, XojPopplerDocument doc, PdfRefEn if (p->equalsRef(ref)) { - object->free(); delete object; refEntryRet = p; @@ -101,8 +100,7 @@ void PdfRefList::parse(Dict* dict, int index, XojPopplerDocument doc, GList*& re { XOJ_CHECK_TYPE(PdfRefList); - Object o; - dict->getVal(index, &o); + Object o = dict->getVal(index); if (o.isArray() && strcmp("ProcSet", dict->getKey(index)) == 0) { @@ -118,12 +116,8 @@ void PdfRefList::parse(Dict* dict, int index, XojPopplerDocument doc, GList*& re Dict* dataDict = o.getDict(); for (int u = 0; u < dataDict->getLength(); u++) { - Object contentsObjectRef; - Object* contentsObject = new Object(); - - dataDict->getVal(u, contentsObject); - dataDict->getValNF(u, &contentsObjectRef); - + Object contentsObjectRef = dataDict->getValNF(u);; + Object* contentsObject = new Object(dataDict->getVal(u)); if (contentsObjectRef.isRef()) { PdfRefEntry* refEntry = NULL; @@ -146,14 +140,9 @@ void PdfRefList::parse(Dict* dict, int index, XojPopplerDocument doc, GList*& re { g_warning("PdfRefList::parse type not handled, type ID = %i\n", contentsObjectRef.getType()); - contentsObject->free(); delete contentsObject; } - - contentsObjectRef.free(); } - - o.free(); } void PdfRefList::writeRefList(const char* type) diff --git a/src/pdf/popplerdirect/poppler/XojPopplerDocument.cpp b/src/pdf/popplerdirect/poppler/XojPopplerDocument.cpp index 073515cb..f186d974 100644 --- a/src/pdf/popplerdirect/poppler/XojPopplerDocument.cpp +++ b/src/pdf/popplerdirect/poppler/XojPopplerDocument.cpp @@ -259,10 +259,7 @@ void XojPopplerDocument::load(char* data, int length) globalParams = new GlobalParams(); } - Object obj; - // create stream - obj.initNull(); - MemStream* str = new MemStream(data, 0, length, &obj); + MemStream* str = new MemStream(data, 0, length, Object(objNull)); PDFDoc* newDoc = new PDFDoc(str, NULL, NULL);