[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

Carlos Garcia Campos carlosgc at gnome.org
Fri May 12 13:31:55 UTC 2017


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.

>  }
>  

-- 
Carlos Garcia Campos
PGP key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x523E6462
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 194 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/poppler/attachments/20170512/eee3d5f5/attachment.sig>


More information about the poppler mailing list