| Index: src/core/SkBitmapDevice.cpp | 
| diff --git a/src/core/SkBitmapDevice.cpp b/src/core/SkBitmapDevice.cpp | 
| index 1668618cf740bac454bd7af06774e5994d4443af..368c8075112e6129b1e72c78d151536d76c68eef 100644 | 
| --- a/src/core/SkBitmapDevice.cpp | 
| +++ b/src/core/SkBitmapDevice.cpp | 
| @@ -24,31 +24,30 @@ SkBitmapDevice::SkBitmapDevice(const SkBitmap& bitmap, const SkDeviceProperties& | 
| , fBitmap(bitmap) { | 
| } | 
|  | 
| -SkBitmapDevice::SkBitmapDevice(SkBitmap::Config config, int width, int height, bool isOpaque) { | 
| +void SkBitmapDevice::init(SkBitmap::Config config, int width, int height, bool isOpaque) { | 
| fBitmap.setConfig(config, width, height, 0, isOpaque ? | 
| kOpaque_SkAlphaType : kPremul_SkAlphaType); | 
| -    if (!fBitmap.allocPixels()) { | 
| -        fBitmap.setConfig(config, 0, 0, 0, isOpaque ? | 
| -                          kOpaque_SkAlphaType : kPremul_SkAlphaType); | 
| -    } | 
| -    if (!isOpaque) { | 
| -        fBitmap.eraseColor(SK_ColorTRANSPARENT); | 
| + | 
| +    if (SkBitmap::kNo_Config != config) { | 
| +        if (!fBitmap.allocPixels()) { | 
| +            // indicate failure by zeroing our bitmap | 
| +            fBitmap.setConfig(config, 0, 0, 0, isOpaque ? | 
| +                              kOpaque_SkAlphaType : kPremul_SkAlphaType); | 
| +        } else if (!isOpaque) { | 
| +            fBitmap.eraseColor(SK_ColorTRANSPARENT); | 
| +        } | 
| } | 
| } | 
|  | 
| +SkBitmapDevice::SkBitmapDevice(SkBitmap::Config config, int width, int height, bool isOpaque) { | 
| +    this->init(config, width, height, isOpaque); | 
| +} | 
| + | 
| SkBitmapDevice::SkBitmapDevice(SkBitmap::Config config, int width, int height, bool isOpaque, | 
| const SkDeviceProperties& deviceProperties) | 
| -    : SkBaseDevice(deviceProperties) { | 
| - | 
| -    fBitmap.setConfig(config, width, height, 0, isOpaque ? | 
| -                      kOpaque_SkAlphaType : kPremul_SkAlphaType); | 
| -    if (!fBitmap.allocPixels()) { | 
| -        fBitmap.setConfig(config, 0, 0, 0, isOpaque ? | 
| -                          kOpaque_SkAlphaType : kPremul_SkAlphaType); | 
| -    } | 
| -    if (!isOpaque) { | 
| -        fBitmap.eraseColor(SK_ColorTRANSPARENT); | 
| -    } | 
| +    : SkBaseDevice(deviceProperties) | 
| +{ | 
| +    this->init(config, width, height, isOpaque); | 
| } | 
|  | 
| SkBitmapDevice::~SkBitmapDevice() { | 
|  |