lockPixels before calling getColorTable.
authorscroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 6 May 2013 18:08:05 +0000 (18:08 +0000)
committerscroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 6 May 2013 18:08:05 +0000 (18:08 +0000)
Fixes a bug where we try to dereference a NULL pointer.

Update the comment for SkBitmap::getColorTable, telling
the client that pixels must be locked for it to return
non-NULL.

R=edisonn@google.com

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

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

include/core/SkBitmap.h
src/pdf/SkPDFImage.cpp

index 124525e..ad18547 100644 (file)
@@ -371,7 +371,9 @@ public:
      */
     SkGpuTexture* getTexture() const;
 
-    /** Return the bitmap's colortable (if any). Does not affect the colortable's
+    /** Return the bitmap's colortable, if it uses one (i.e. fConfig is
+        kIndex8_Config or kRLE_Index8_Config) and the pixels are locked.
+        Otherwise returns NULL. Does not affect the colortable's
         reference count.
     */
     SkColorTable* getColorTable() const { return fColorTable; }
index 04307be..102bd58 100644 (file)
@@ -321,6 +321,7 @@ SkPDFImage::SkPDFImage(SkStream* imageData,
         insertName("ColorSpace", "DeviceGray");
     } else if (config == SkBitmap::kIndex8_Config ||
         config == SkBitmap::kRLE_Index8_Config) {
+        SkAutoLockPixels alp(bitmap);
         insert("ColorSpace",
                makeIndexedColorSpace(bitmap.getColorTable()))->unref();
     } else {