diff options
author | junov@chromium.org <junov@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-07-09 20:53:37 +0000 |
---|---|---|
committer | junov@chromium.org <junov@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2012-07-09 20:53:37 +0000 |
commit | 9fa4d0cca9b27d4ffb510096b37a69d78f88dfc6 (patch) | |
tree | 2d4ec4d83b976971211ccb3ffdf7704b3cc056ce /src | |
parent | bcf0c5229c047e8c8ba993faf0ca14c30a3d4c51 (diff) |
Adding sanity checks on restore offsets in SkPicturePlayback::draw
Review URL: http://codereview.appspot.com/6382044/
BUG=http://code.google.com/p/chromium/issues/detail?id=133432
git-svn-id: http://skia.googlecode.com/svn/trunk@4496 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'src')
-rw-r--r-- | src/core/SkPicturePlayback.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/core/SkPicturePlayback.cpp b/src/core/SkPicturePlayback.cpp index d3c77af2d1..98bfb16af5 100644 --- a/src/core/SkPicturePlayback.cpp +++ b/src/core/SkPicturePlayback.cpp @@ -546,6 +546,8 @@ void SkPicturePlayback::draw(SkCanvas& canvas) { SkRegion::Op op = ClipParams_unpackRegionOp(packed); bool doAA = ClipParams_unpackDoAA(packed); size_t offsetToRestore = getInt(); + SkASSERT(!offsetToRestore || \ + offsetToRestore > fReader.offset()); if (!canvas.clipPath(path, op, doAA) && offsetToRestore) { #ifdef SPEW_CLIP_SKIPPING skipPath.recordSkip(offsetToRestore - fReader.offset()); @@ -558,6 +560,8 @@ void SkPicturePlayback::draw(SkCanvas& canvas) { uint32_t packed = getInt(); SkRegion::Op op = ClipParams_unpackRegionOp(packed); size_t offsetToRestore = getInt(); + SkASSERT(!offsetToRestore || \ + offsetToRestore > fReader.offset()); if (!canvas.clipRegion(region, op) && offsetToRestore) { #ifdef SPEW_CLIP_SKIPPING skipRegion.recordSkip(offsetToRestore - fReader.offset()); @@ -571,6 +575,8 @@ void SkPicturePlayback::draw(SkCanvas& canvas) { SkRegion::Op op = ClipParams_unpackRegionOp(packed); bool doAA = ClipParams_unpackDoAA(packed); size_t offsetToRestore = getInt(); + SkASSERT(!offsetToRestore || \ + offsetToRestore > fReader.offset()); if (!canvas.clipRect(rect, op, doAA) && offsetToRestore) { #ifdef SPEW_CLIP_SKIPPING skipRect.recordSkip(offsetToRestore - fReader.offset()); |