glib/poppler-layer.cc |    4 +++-
 poppler/PDFDoc.cc     |   27 +++++++++++++++------------
 2 files changed, 18 insertions(+), 13 deletions(-)

New commits:
commit bdd617f2177a7836f6b6686fde892664513a32a7
Author: Carlos Garcia Campos <[email protected]>
Date:   Tue Aug 3 13:05:26 2010 +0200

    [glib] Fix a crash when a layer doesn't have a name
    
    Fixes bug #28842.

diff --git a/glib/poppler-layer.cc b/glib/poppler-layer.cc
index 12f06b7..8a481dd 100644
--- a/glib/poppler-layer.cc
+++ b/glib/poppler-layer.cc
@@ -75,6 +75,7 @@ _poppler_layer_new (PopplerDocument *document,
                    GList           *rbgroup)
 {
   PopplerLayer *poppler_layer;
+  GooString    *layer_name;
 
   g_return_val_if_fail (POPPLER_IS_DOCUMENT (document), NULL);
   g_return_val_if_fail (layer != NULL, NULL);
@@ -84,7 +85,8 @@ _poppler_layer_new (PopplerDocument *document,
   poppler_layer->document = (PopplerDocument *)g_object_ref (document);
   poppler_layer->layer = layer;
   poppler_layer->rbgroup = rbgroup;
-  poppler_layer->title = _poppler_goo_string_to_utf8 (layer->oc->getName ());
+  layer_name = layer->oc->getName ();
+  poppler_layer->title = layer_name ? _poppler_goo_string_to_utf8 (layer_name) 
: NULL;
   
   return poppler_layer;
 }
commit e9f0646ca664cc27825f7e084f8419fe0de1fcfc
Author: Carlos Garcia Campos <[email protected]>
Date:   Tue Aug 3 13:02:52 2010 +0200

    Catalog page array might contain NULL for some pages in invalid documents
    
    Fixes a crash reproducible with gtk-splash-test when opening document
    attached to bug #28842.

diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc
index ade5fe4..33a2b4d 100644
--- a/poppler/PDFDoc.cc
+++ b/poppler/PDFDoc.cc
@@ -368,10 +368,11 @@ void PDFDoc::displayPage(OutputDev *out, int page,
   if (globalParams->getPrintCommands()) {
     printf("***** page %d *****\n", page);
   }
-  catalog->getPage(page)->display(out, hDPI, vDPI,
-                                 rotate, useMediaBox, crop, printing, catalog,
-                                 abortCheckCbk, abortCheckCbkData,
-                                 annotDisplayDecideCbk, 
annotDisplayDecideCbkData);
+  if (catalog->getPage(page))
+    catalog->getPage(page)->display(out, hDPI, vDPI,
+                                   rotate, useMediaBox, crop, printing, 
catalog,
+                                   abortCheckCbk, abortCheckCbkData,
+                                   annotDisplayDecideCbk, 
annotDisplayDecideCbkData);
 }
 
 void PDFDoc::displayPages(OutputDev *out, int firstPage, int lastPage,
@@ -398,20 +399,22 @@ void PDFDoc::displayPageSlice(OutputDev *out, int page,
                              void *abortCheckCbkData,
                               GBool (*annotDisplayDecideCbk)(Annot *annot, 
void *user_data),
                               void *annotDisplayDecideCbkData) {
-  catalog->getPage(page)->displaySlice(out, hDPI, vDPI,
-                                      rotate, useMediaBox, crop,
-                                      sliceX, sliceY, sliceW, sliceH,
-                                      printing, catalog,
-                                      abortCheckCbk, abortCheckCbkData,
-                                      annotDisplayDecideCbk, 
annotDisplayDecideCbkData);
+  if (catalog->getPage(page))
+    catalog->getPage(page)->displaySlice(out, hDPI, vDPI,
+                                        rotate, useMediaBox, crop,
+                                        sliceX, sliceY, sliceW, sliceH,
+                                        printing, catalog,
+                                        abortCheckCbk, abortCheckCbkData,
+                                        annotDisplayDecideCbk, 
annotDisplayDecideCbkData);
 }
 
 Links *PDFDoc::getLinks(int page) {
-  return catalog->getPage(page)->getLinks(catalog);
+  return catalog->getPage(page) ? catalog->getPage(page)->getLinks(catalog) : 
NULL;
 }
   
 void PDFDoc::processLinks(OutputDev *out, int page) {
-  catalog->getPage(page)->processLinks(out, catalog);
+  if (catalog->getPage(page))
+    catalog->getPage(page)->processLinks(out, catalog);
 }
 
 GBool PDFDoc::isLinearized() {
_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler

Reply via email to