update to 0.8.3

changes:
-fix crashes on certain input
-Fix leaks
-Do not limit CharCodeToUnicodeString to 8 characters
-Support for surrogates outside the BMP plane

pkgsrc note: the crashes had been fixed by patches in pkgsrc before
This commit is contained in:
drochner 2008-06-05 21:03:37 +00:00
parent b2739ce816
commit 9cee4bd5cb
5 changed files with 7 additions and 122 deletions

View file

@ -1,10 +1,8 @@
# $NetBSD: Makefile,v 1.28 2008/05/15 09:15:41 drochner Exp $
# $NetBSD: Makefile,v 1.29 2008/06/05 21:03:37 drochner Exp $
#
.include "../../print/poppler/Makefile.common"
PKGREVISION= 1
COMMENT= PDF rendering library
USE_TOOLS+= gmake

View file

@ -1,8 +1,8 @@
# $NetBSD: Makefile.common,v 1.15 2008/06/03 20:31:10 abs Exp $
# $NetBSD: Makefile.common,v 1.16 2008/06/05 21:03:37 drochner Exp $
# used by print/poppler/Makefile
# used by print/poppler-qt4/Makefile
POPPLER_VERS= 0.8.2
POPPLER_VERS= 0.8.3
DISTNAME= poppler-${POPPLER_VERS}
CATEGORIES= print
MASTER_SITES= http://poppler.freedesktop.org/

View file

@ -1,10 +1,8 @@
$NetBSD: distinfo,v 1.28 2008/05/15 17:51:29 drochner Exp $
$NetBSD: distinfo,v 1.29 2008/06/05 21:03:37 drochner Exp $
SHA1 (poppler-0.8.2.tar.gz) = afa4baa4e0b65c9663cddae7b0b3da8efb1c9263
RMD160 (poppler-0.8.2.tar.gz) = 6593f26070d051c6d5054acc454e15dde97a5203
Size (poppler-0.8.2.tar.gz) = 1459274 bytes
SHA1 (poppler-0.8.3.tar.gz) = 763d18d9f0e625a936b3a3fbbcd00b58ddd2f84f
RMD160 (poppler-0.8.3.tar.gz) = f6553fdf468bd67ec8a7f943ba2cc7f141052302
Size (poppler-0.8.3.tar.gz) = 1463306 bytes
SHA1 (patch-aa) = 43c63c16d3a845e394a8eb0c3a321944fcf17615
SHA1 (patch-ab) = e3d413ec50a098af06cb2efc2fac2042064498dd
SHA1 (patch-ag) = d1581a1ca40bba34146a4a6f4ee7d38b8f6ff3b7
SHA1 (patch-ah) = ca50d0d8ef6da70f201cc66b0e797dde904b77e0
SHA1 (patch-ai) = d03a8df1d32822a387f53206a21f8eba41a0c430

View file

@ -1,22 +0,0 @@
$NetBSD: patch-ah,v 1.3 2008/05/15 09:15:41 drochner Exp $
--- poppler/Annot.cc.orig 2008-03-26 20:38:52.000000000 +0100
+++ poppler/Annot.cc
@@ -1735,7 +1735,7 @@ void AnnotWidget::initialize(XRef *xrefA
// Only text or choice fields needs to have appearance regenerated
// see section 8.6.2 "Variable Text" of PDFReference
regen = gFalse;
- if (widget->getType () == formText || widget->getType () == formChoice) {
+ if (widget != NULL && (widget->getType () == formText || widget->getType () == formChoice)) {
regen = form->getNeedAppearances ();
}
@@ -2577,7 +2577,7 @@ void AnnotWidget::generateFieldAppearanc
int dashLength, ff, quadding, comb, nOptions, topIdx, i, j;
GBool modified;
- if (!widget->getField () || !widget->getField ()->getObj ()->isDict ())
+ if (widget == NULL || !widget->getField () || !widget->getField ()->getObj ()->isDict ())
return;
field = widget->getField ()->getObj ()->getDict ();

View file

@ -1,89 +0,0 @@
$NetBSD: patch-ai,v 1.3 2008/05/15 17:51:29 drochner Exp $
--- poppler/OptionalContent.cc.orig 2008-03-26 20:38:52.000000000 +0100
+++ poppler/OptionalContent.cc
@@ -162,12 +162,18 @@ OptionalContentGroup* OCGs::findOcgByRef
{
//TODO: make this more efficient
OptionalContentGroup *ocg = NULL;
- for (int i=0; i < optionalContentGroups->getLength(); ++i) {
- ocg = (OptionalContentGroup*)optionalContentGroups->get(i);
- if ( (ocg->ref().num == ref.num) && (ocg->ref().gen == ref.gen) ) {
- return ocg;
+ if (optionalContentGroups != NULL)
+ {
+ for (int i=0; i < optionalContentGroups->getLength(); ++i) {
+ ocg = (OptionalContentGroup*)optionalContentGroups->get(i);
+ if ( (ocg->ref().num == ref.num) && (ocg->ref().gen == ref.gen) ) {
+ return ocg;
+ }
}
}
+
+ error(-1, "Could not find a OCG with Ref (%d:%d)", ref.num, ref.gen);
+
// not found
return NULL;
}
@@ -208,7 +214,7 @@ bool OCGs::optContentIsVisible( Object *
}
} else if (ocg.isRef()) {
OptionalContentGroup* oc = findOcgByRef( ocg.getRef() );
- if ( oc->state() == OptionalContentGroup::Off ) {
+ if ( !oc || oc->state() == OptionalContentGroup::Off ) {
result = false;
} else {
result = true ;
@@ -218,13 +224,10 @@ bool OCGs::optContentIsVisible( Object *
policy.free();
} else if ( dictType.isName("OCG") ) {
OptionalContentGroup* oc = findOcgByRef( dictRef->getRef() );
- if ( oc ) {
-// printf("Found valid group object\n");
- if ( oc->state() == OptionalContentGroup::Off ) {
- result=false;
- }
+ if ( !oc || oc->state() == OptionalContentGroup::Off ) {
+ result=false;
}
- }
+ }
dictType.free();
dictObj.free();
// printf("visibility: %s\n", result? "on" : "off");
@@ -238,7 +241,7 @@ bool OCGs::allOn( Array *ocgArray )
ocgArray->getNF(i, &ocgItem);
if (ocgItem.isRef()) {
OptionalContentGroup* oc = findOcgByRef( ocgItem.getRef() );
- if ( oc->state() == OptionalContentGroup::Off ) {
+ if ( oc && oc->state() == OptionalContentGroup::Off ) {
return false;
}
}
@@ -253,7 +256,7 @@ bool OCGs::allOff( Array *ocgArray )
ocgArray->getNF(i, &ocgItem);
if (ocgItem.isRef()) {
OptionalContentGroup* oc = findOcgByRef( ocgItem.getRef() );
- if ( oc->state() == OptionalContentGroup::On ) {
+ if ( oc && oc->state() == OptionalContentGroup::On ) {
return false;
}
}
@@ -268,7 +271,7 @@ bool OCGs::anyOn( Array *ocgArray )
ocgArray->getNF(i, &ocgItem);
if (ocgItem.isRef()) {
OptionalContentGroup* oc = findOcgByRef( ocgItem.getRef() );
- if ( oc->state() == OptionalContentGroup::On ) {
+ if ( oc && oc->state() == OptionalContentGroup::On ) {
return true;
}
}
@@ -283,7 +286,7 @@ bool OCGs::anyOff( Array *ocgArray )
ocgArray->getNF(i, &ocgItem);
if (ocgItem.isRef()) {
OptionalContentGroup* oc = findOcgByRef( ocgItem.getRef() );
- if ( oc->state() == OptionalContentGroup::Off ) {
+ if ( oc && oc->state() == OptionalContentGroup::Off ) {
return true;
}
}