From 8b4ba6373559026f7e24de1b8b487d8b72256dc1 Mon Sep 17 00:00:00 2001 From: "mtklein@google.com" Date: Tue, 3 Sep 2013 18:07:01 +0000 Subject: Fix bug in SkWriter32. If you give SkWriter32 external storage but that external storage is too small for the first reservation you make, you'll hit an assert in debug mode. I think the answer is to simply remove the SkASSERT. Added a test. BUG= R=reed@google.com Review URL: https://codereview.chromium.org/23646007 git-svn-id: http://skia.googlecode.com/svn/trunk@11062 2bbb7eff-a529-9590-31e7-b0007b416f81 --- tests/Writer32Test.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'tests/Writer32Test.cpp') diff --git a/tests/Writer32Test.cpp b/tests/Writer32Test.cpp index 194164dd1c..fd232fc4d0 100644 --- a/tests/Writer32Test.cpp +++ b/tests/Writer32Test.cpp @@ -21,6 +21,15 @@ static void check_contents(skiatest::Reporter* reporter, const SkWriter32& write REPORTER_ASSERT(reporter, !memcmp(storage.get(), expected, size)); } + +static void test_reserve(skiatest::Reporter* reporter) { + // There used to be a bug where we'd assert your first reservation had to + // fit in external storage if you used it. This would crash in debug mode. + uint8_t storage[4]; + SkWriter32 writer(0, storage, sizeof(storage)); + writer.reserve(40); +} + static void test_string_null(skiatest::Reporter* reporter) { uint8_t storage[8]; SkWriter32 writer(0, storage, sizeof(storage)); @@ -238,6 +247,7 @@ static void Tests(skiatest::Reporter* reporter) { testWritePad(reporter, &writer); } + test_reserve(reporter); test_string_null(reporter); test_ptr(reporter); test_rewind(reporter); -- cgit v1.2.3