pdfviewer: ignore more bad stauff in pdfs

Review URL: https://codereview.chromium.org/18112023

git-svn-id: http://skia.googlecode.com/svn/trunk@9990 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp b/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp
index 7a8ba6f..8bd14cc 100644
--- a/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp
+++ b/experimental/PdfViewer/pdfparser/native/SkNativeParsedPDF.cpp
@@ -103,14 +103,17 @@
 
     if (fRootCatalogRef) {
         fRootCatalog = (SkPdfCatalogDictionary*)resolveReference(fRootCatalogRef);
-        SkPdfPageTreeNodeDictionary* tree = fRootCatalog->Pages(this);
-
-        fillPages(tree);
-    } else {
-        // TODO(edisonn): corrupted pdf, read it from beginning and rebuild (xref, trailer, or just reall all objects)
-        // 0 pages
+        if (fRootCatalog->isDictionary() && fRootCatalog->valid()) {
+            SkPdfPageTreeNodeDictionary* tree = fRootCatalog->Pages(this);
+            if (tree && tree->isDictionary() && tree->valid()) {
+                fillPages(tree);
+            }
+        }
     }
 
+    // TODO(edisonn): corrupted pdf, read it from beginning and rebuild (xref, trailer, or just reall all objects)
+    // 0 pages
+
     // now actually read all objects if we want, or do it lazyly
     // and resolve references?... or not ...
 }
diff --git a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp
index 1288132..604e9fb 100644
--- a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp
+++ b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp
@@ -69,7 +69,8 @@
         array->appendInArray(newObj);
     }
     // TODO(edisonn): report not reached, we should never get here
-    SkASSERT(false);
+    // TODO(edisonn): there might be a bug here, enable an assert and run it on files
+    // or it might be that the files were actually corrupted
     return start;
 }
 
@@ -170,6 +171,8 @@
                         in++;
                         break;
                 }
+            } else {
+                in++;
             }
         } else {
             // TODO(edisonn): perf, avoid copy into itself, maybe first do a simple scan until found backslash ?