Support comments and blank lines in SUPPRESSIONS file
[pdfium.git] / fpdfsdk / src / fpdfppo.cpp
index a803454..c68ae68 100644 (file)
@@ -49,12 +49,7 @@ FX_BOOL CPDF_PageOrganizer::PDFDocInit(CPDF_Document *pDestPDFDoc, CPDF_Document
                return FALSE;
        
        CFX_ByteString producerstr;
-       
-#ifdef FOXIT_CHROME_BUILD
-       producerstr.Format("Google");
-#else
-        producerstr.Format("Foxit PDF SDK %s - Foxit Corporation", "2.0");
-#endif
+       producerstr.Format("PDFium");
        DInfoDict->SetAt("Producer", new CPDF_String(producerstr));
 
        //Set type////////////////////////////////////////////////////////////////
@@ -64,7 +59,7 @@ FX_BOOL CPDF_PageOrganizer::PDFDocInit(CPDF_Document *pDestPDFDoc, CPDF_Document
                pNewRoot->SetAt("Type", new CPDF_Name("Catalog"));
        }
        
-       CPDF_Dictionary* pNewPages = (CPDF_Dictionary*)pNewRoot->GetElement("Pages")->GetDirect();
+       CPDF_Dictionary* pNewPages = (CPDF_Dictionary*)(pNewRoot->GetElement("Pages")? pNewRoot->GetElement("Pages")->GetDirect() : NULL);
        if(!pNewPages)
        {
                pNewPages = new CPDF_Dictionary;
@@ -215,8 +210,11 @@ CPDF_Object* CPDF_PageOrganizer::PageDictGetInheritableTag(CPDF_Dictionary *pDic
        {
                if(pp->KeyExist((const char*)nSrctag))  
                        return pp->GetElement((const char*)nSrctag);
-               else if(pp->KeyExist("Parent"))
+               else if (pp->KeyExist("Parent"))
+               {
                        pp = (CPDF_Dictionary*)pp->GetElement("Parent")->GetDirect();
+                       if (pp->GetType() == PDFOBJ_NULL) break;
+               }
                else break;
        }
        
@@ -310,8 +308,17 @@ int        CPDF_PageOrganizer::GetNewObjId(CPDF_Document *pDoc, CFX_MapPtrToPtr* pMapPt
        }
        else
        {
-               CPDF_Object* pClone  = pRef->GetDirect()->Clone();
-               if(!pClone)                     return 0;
+               CPDF_Object* pDirect = pRef->GetDirect();
+               if(!pDirect)
+               {
+                       return 0;
+               }
+
+               CPDF_Object* pClone = pDirect->Clone();
+               if(!pClone)
+               {
+                       return 0;
+               }
                
                if(pClone->GetType() == PDFOBJ_DICTIONARY)
                {