[poppler] Branch 'better_object' - cpp/poppler-document.cpp cpp/poppler-page.cpp glib/poppler-action.cc glib/poppler-attachment.cc glib/poppler-document.cc glib/poppler-input-stream.cc glib/poppler-input-stream.h glib/poppler-movie.cc glib/poppler-page.cc glib/poppler-structure-element.cc poppler/Annot.cc poppler/Annot.h poppler/Array.cc poppler/Array.h poppler/CairoFontEngine.cc poppler/CairoOutputDev.cc poppler/Catalog.cc poppler/Catalog.h poppler/CMap.cc poppler/DCTStream.cc poppler/Dict.cc poppler/Dict.h poppler/FileSpec.cc poppler/FileSpec.h poppler/FontInfo.cc poppler/Form.cc poppler/Form.h poppler/Function.cc poppler/Gfx.cc poppler/GfxFont.cc poppler/GfxFont.h poppler/Gfx.h poppler/GfxState.cc poppler/Hints.cc poppler/JBIG2Stream.cc poppler/JPEG2000Stream.cc poppler/Lexer.cc poppler/Lexer.h poppler/Linearization.cc poppler/Link.cc poppler/Movie.cc poppler/Movie.h poppler/Object.cc poppler/Object.h poppler/OptionalContent.cc poppler/Outline.cc poppler/Page.cc poppler/Page.h popp ler/PageLabelInfo.cc poppler/PageTransition.cc poppler/Parser.cc poppler/Parser.h poppler/PDFDoc.cc poppler/PDFDoc.h poppler/PopplerCache.cc poppler/PopplerCache.h poppler/PSOutputDev.cc poppler/Rendition.cc poppler/SecurityHandler.cc poppler/Sound.cc poppler/Sound.h poppler/SplashOutputDev.cc poppler/StdinPDFDocBuilder.cc poppler/Stream.cc poppler/Stream.h poppler/StructElement.cc poppler/StructTreeRoot.cc poppler/ViewerPreferences.cc poppler/XRef.cc poppler/XRef.h qt4/src qt4/tests qt5/src qt5/tests test/pdf-fullrewrite.cc utils/pdfinfo.cc utils/pdftohtml.cc utils/pdftotext.cc utils/pdfunite.cc
Albert Astals Cid
aacid at kde.org
Fri May 12 21:45:25 UTC 2017
El divendres, 12 de maig de 2017, a les 15:31:55 CEST, Carlos Garcia Campos va
escriure:
> Albert Astals Cid <aacid at kemper.freedesktop.org> writes:
>
>
> This looks great, I have a couple of comments after a first glance.
>
> > if (!found)
> >
> > - annotObj.free ();
> > + annotObj.setToNull ();
>
> As I commented on IRC, I think
>
> annotObj = Object(objNull);
>
> is not less efficient, looks simpler and we don't need setToNull() at
> all.
>
> > diff --git a/poppler/Annot.cc b/poppler/Annot.cc
> > index 73c2fe66..96a7e330 100644
> > --- a/poppler/Annot.cc
> > +++ b/poppler/Annot.cc
> >
> > @@ -1228,12 +1188,13 @@ Annot::Annot(PDFDoc *docA, Dict *dict, Object
> > *obj) {>
> > }
> > flags = flagUnknown;
> > type = typeUnknown;
> >
> > - annotObj.initDict (dict);
> > + dict->incRef();
> > + annotObj = Object(dict);
> >
> > initialize (docA, dict);
>
> I still find this pattern quite confusing. The problem is that Object()
> is taking the ownership of passing refcounted objects. That's not
> consistent with all other types where the value is copied. I think it
> should be Object() constructor the one doing the incRef() in case of
> dicts, arrays and streams.
You just complained exactly about the reverse thing (needing to do a decRef
when passing a Dict to an Object) in the other email ;)
I've done a few changes making all the incRef/decRef private.
Now the the pattern is:
* If you pass a Dict/Annot/Array to Object it will "take" it, that's most of
the times correct because if you do that is because you just new'ed the Dict/
Annot/Array yourself
* If what you want to do is incRef, you should be passing Objects and not raw
Dict/Annot/Array
Does that work for you?
Cheers,
Albert
>
> > }
More information about the poppler
mailing list