aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-14 17:26:37 +0000
committerGravatar scroggo@google.com <scroggo@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-09-14 17:26:37 +0000
commitd614c6a4e059bd9ea5b882ca845e886a82aeff5c (patch)
tree37469753a1eafa0d3207523130a934efa0955b0c /tests
parent9548be3badb2e542035a20070cdfcd39e633f048 (diff)
For a picture playback with nothing written, use an empty SkData.
This prevents crashing when attempting to access fOpData. BUG=https://code.google.com/p/skia/issues/detail?id=870 Review URL: https://codereview.appspot.com/6499108 git-svn-id: http://skia.googlecode.com/svn/trunk@5550 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tests')
-rw-r--r--tests/PictureTest.cpp42
1 files changed, 42 insertions, 0 deletions
diff --git a/tests/PictureTest.cpp b/tests/PictureTest.cpp
new file mode 100644
index 0000000000..34d7832034
--- /dev/null
+++ b/tests/PictureTest.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+#include "Test.h"
+#include "SkPicture.h"
+#include "SkStream.h"
+
+#ifdef SK_DEBUG
+// Ensure that deleting SkPicturePlayback does not assert. Asserts only fire in debug mode, so only
+// run in debug mode.
+static void test_deleting_empty_playback() {
+ SkPicture picture;
+ // Creates an SkPictureRecord
+ picture.beginRecording(0, 0);
+ // Turns that into an SkPicturePlayback
+ picture.endRecording();
+ // Deletes the old SkPicturePlayback, and creates a new SkPictureRecord
+ picture.beginRecording(0, 0);
+}
+
+// Ensure that serializing an empty picture does not assert. Likewise only runs in debug mode.
+static void test_serializing_empty_picture() {
+ SkPicture picture;
+ picture.beginRecording(0, 0);
+ picture.endRecording();
+ SkDynamicMemoryWStream stream;
+ picture.serialize(&stream);
+}
+#endif
+
+static void TestPicture(skiatest::Reporter* reporter) {
+#ifdef SK_DEBUG
+ test_deleting_empty_playback();
+ test_serializing_empty_picture();
+#endif
+}
+
+#include "TestClassDef.h"
+DEFINE_TESTCLASS("Picture", PictureTestClass, TestPicture)