diff options
author | mtklein@google.com <mtklein@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-09-03 18:07:01 +0000 |
---|---|---|
committer | mtklein@google.com <mtklein@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-09-03 18:07:01 +0000 |
commit | 8b4ba6373559026f7e24de1b8b487d8b72256dc1 (patch) | |
tree | d3489f727573219b30b01f31a326fd2ff162691d /tests | |
parent | c6168f2b2c9bf7ef48389a1076cafc4a59579212 (diff) |
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
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Writer32Test.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
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); |