diff --git a/experimental/PdfViewer/SkPdfFont.cpp b/experimental/PdfViewer/SkPdfFont.cpp index 0fec460bf5..e5c880d585 100644 --- a/experimental/PdfViewer/SkPdfFont.cpp +++ b/experimental/PdfViewer/SkPdfFont.cpp @@ -197,7 +197,7 @@ SkPdfFont* fontFromName(SkNativeParsedPDF* doc, SkPdfObject* obj, const char* fo // TODO(edisonn): perf - make a map for (unsigned int i = 0 ; i < doc->objects(); i++) { SkPdfObject* obj = doc->object(i); - if (!obj->isDictionary()) { + if (!obj || !obj->isDictionary()) { continue; } diff --git a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp index 4798031808..cc5788bfd7 100644 --- a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp +++ b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp @@ -291,6 +291,9 @@ static int readStringLength(int level, const unsigned char* start, const unsigne } static const unsigned char* readString(int level, const unsigned char* start, const unsigned char* end, SkPdfObject* str, SkPdfAllocator* allocator) { + if (!allocator) { + return end; + } int outLength = readStringLength(level, start, end); // TODO(edisonn): optimize the allocation, don't allocate new string, but put it in a preallocated buffer unsigned char* out = (unsigned char*)allocator->alloc(outLength); @@ -434,6 +437,9 @@ static int readHexStringLength(int level, const unsigned char* start, const unsi } static const unsigned char* readHexString(int level, const unsigned char* start, const unsigned char* end, SkPdfObject* str, SkPdfAllocator* allocator) { + if (!allocator) { + return end; + } int outLength = readHexStringLength(level, start, end); // TODO(edisonn): optimize the allocation, don't allocate new string, but put it in a preallocated buffer unsigned char* out = (unsigned char*)allocator->alloc(outLength); @@ -556,6 +562,9 @@ static int readNameLength(int level, const unsigned char* start, const unsigned } static const unsigned char* readName(int level, const unsigned char* start, const unsigned char* end, SkPdfObject* name, SkPdfAllocator* allocator) { + if (!allocator) { + return end; + } int outLength = readNameLength(level, start, end); // TODO(edisonn): optimize the allocation, don't allocate new string, but put it in a preallocated buffer unsigned char* out = (unsigned char*)allocator->alloc(outLength);