#include "gm.h"
#include "SkCanvas.h"
+static void test_nulldev(SkCanvas* canvas) {
+ SkBitmap bm;
+ bm.setConfig(SkBitmap::kARGB_8888_Config, 30, 30);
+ // notice: no pixels mom! be sure we don't crash
+ // https://code.google.com/p/chromium/issues/detail?id=352616
+ SkCanvas c(bm);
+
+ SkBitmap src;
+ src.allocN32Pixels(10, 10);
+ src.eraseColor(SK_ColorRED);
+
+ // ensure we don't crash
+ c.writePixels(src, 0, 0);
+}
+
static void draw_text_stroked(SkCanvas* canvas, const SkPaint& paint) {
SkPaint p(paint);
SkPoint loc = { 20, 450 };
}
virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE {
+ if (true) { test_nulldev(canvas); }
SkPaint paint;
paint.setAntiAlias(true);
bool SkBitmapDevice::onWritePixels(const SkImageInfo& srcInfo, const void* srcPixels,
size_t srcRowBytes, int x, int y) {
+ // since we don't stop creating un-pixeled devices yet, check for no pixels here
+ if (NULL == fBitmap.getPixels()) {
+ return false;
+ }
+
SkImageInfo dstInfo = fBitmap.info();
dstInfo.fWidth = srcInfo.width();
dstInfo.fHeight = srcInfo.height();