From 45fa0cbc54f46a2c55b7db9501ff74f539190bd1 Mon Sep 17 00:00:00 2001 From: Derek Sollenberger Date: Tue, 9 Apr 2013 16:36:55 -0400 Subject: [PATCH] Ensure that a canvas is always backed by some form of SkDevice. bug: 8518884 Change-Id: Id6c597179878ce5b938c00422e88bef5f12e2e1f --- core/jni/android/graphics/Canvas.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/core/jni/android/graphics/Canvas.cpp b/core/jni/android/graphics/Canvas.cpp index 9a9f6c8a151a1..11c70530e96af 100644 --- a/core/jni/android/graphics/Canvas.cpp +++ b/core/jni/android/graphics/Canvas.cpp @@ -77,7 +77,14 @@ public: } static SkCanvas* initRaster(JNIEnv* env, jobject, SkBitmap* bitmap) { - return bitmap ? new SkCanvas(*bitmap) : new SkCanvas; + if (bitmap) { + return new SkCanvas(*bitmap); + } else { + // Create an empty bitmap device to prevent callers from crashing + // if they attempt to draw into this canvas. + SkBitmap emptyBitmap; + return new SkCanvas(emptyBitmap); + } } static void copyCanvasState(JNIEnv* env, jobject clazz,