pdfviewer: debug code for crash
authoredisonn@google.com <edisonn@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 5 Aug 2013 20:45:40 +0000 (20:45 +0000)
committeredisonn@google.com <edisonn@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 5 Aug 2013 20:45:40 +0000 (20:45 +0000)
Review URL: https://codereview.chromium.org/22269002

git-svn-id: http://skia.googlecode.com/svn/trunk@10548 2bbb7eff-a529-9590-31e7-b0007b416f81

experimental/PdfViewer/SkPdfBasics.h
experimental/PdfViewer/SkPdfRenderer.cpp
experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp

index 662e745583e6909a4a413db53b1e4c7e6cf46623..7016339c6bd714a504d7a8bd13cf4e9b8ebc87ed 100644 (file)
@@ -350,6 +350,7 @@ smoothness             number             (PDF 1.3) The precision with which col
         fDashPhase    = 0;
         fBlendModesLength = 1;
         fBlendModes[0] = SkXfermode::kSrc_Mode;  // PDF: Normal Blend mode
+        fSMask        = NULL;
     }
 
     // TODO(edisonn): make two functons instead, stroking and non stoking, avoid branching
index 50b48a057b36f5333d913377fff54aa2708517a2..bb2049e17f056bdd43847f581d327b5aff8d2ef7 100644 (file)
@@ -265,7 +265,7 @@ static bool readToken(SkPdfNativeTokenizer* fTokenizer, PdfToken* token) {
             const SkClipStack::Element* elem;
             double y = 0;
             int total = 0;
-            while (elem = iter.next()) {
+            while ((elem = iter.next()) != NULL) {
                 total++;
                 y += 30;
 
index 637eb4dda69e5c53cf37e140b394600756da466f..a8881382b4acf58e6e03ae59019d3b00f3e37a28 100644 (file)
@@ -929,6 +929,11 @@ SkPdfNativeTokenizer::~SkPdfNativeTokenizer() {
 }
 
 bool SkPdfNativeTokenizer::readTokenCore(PdfToken* token) {
+    SkPdfObject obj;
+#ifdef PDF_TRACE_READ_TOKEN
+    static int read_op = 0;
+    int last;
+#endif
     token->fKeyword = NULL;
     token->fObject = NULL;
 
@@ -937,8 +942,18 @@ bool SkPdfNativeTokenizer::readTokenCore(PdfToken* token) {
         return false;
     }
 
-    SkPdfObject obj;
+#ifdef PDF_TRACE_READ_TOKEN
+    printf("BEFORE the read: %i\n", read_op);
+    last = read_op;
+#endif
+
     fUncompressedStream = nextObject(0, fUncompressedStream, fUncompressedStreamEnd, &obj, fAllocator, fDoc);
+#ifdef PDF_TRACE_READ_TOKEN
+    printf("BEFORE the read: %i\n", read_op);
+    if (last != read_op) {
+        printf("break; // memory override");
+    }
+#endif
 
     // If it is a keyword, we will only get the pointer of the string
     if (obj.type() == SkPdfObject::kKeyword_PdfObjectType) {
@@ -953,7 +968,6 @@ bool SkPdfNativeTokenizer::readTokenCore(PdfToken* token) {
     }
 
 #ifdef PDF_TRACE_READ_TOKEN
-    static int read_op = 0;
     read_op++;
 #if 0
     if (548 == read_op) {