aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMike Reed <reed@google.com>2009-07-09 12:49:35 -0700
committerThe Android Open Source Project <initial-contribution@android.com>2009-07-09 12:49:35 -0700
commita756c7639847795b784b59720e1e28b931882df4 (patch)
tree94d1759d1953658b3fe782b3e78fa6e204d9b8e2 /src
parent35713add484e19b6e0b0bcee8f21048fc437a0e7 (diff)
parentee38d710c05d4a6a8d8a649f5a05b8380ba748bc (diff)
downloadexternal_skia-a756c7639847795b784b59720e1e28b931882df4.zip
external_skia-a756c7639847795b784b59720e1e28b931882df4.tar.gz
external_skia-a756c7639847795b784b59720e1e28b931882df4.tar.bz2
am ee38d710: catch underflow in restore()
Merge commit 'ee38d710c05d4a6a8d8a649f5a05b8380ba748bc' * commit 'ee38d710c05d4a6a8d8a649f5a05b8380ba748bc': catch underflow in restore()
Diffstat (limited to 'src')
-rw-r--r--src/core/SkPictureRecord.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp
index b908670..15ae562 100644
--- a/src/core/SkPictureRecord.cpp
+++ b/src/core/SkPictureRecord.cpp
@@ -49,18 +49,20 @@ int SkPictureRecord::saveLayer(const SkRect* bounds, const SkPaint* paint,
}
void SkPictureRecord::restore() {
+ // check for underflow
+ if (fRestoreOffsetStack.count() == 0) {
+ return;
+ }
// patch up the clip offsets
- {
- uint32_t restoreOffset = (uint32_t)fWriter.size();
- uint32_t offset = fRestoreOffsetStack.top();
- while (offset) {
- uint32_t* peek = fWriter.peek32(offset);
- offset = *peek;
- *peek = restoreOffset;
- }
- fRestoreOffsetStack.pop();
+ uint32_t restoreOffset = (uint32_t)fWriter.size();
+ uint32_t offset = fRestoreOffsetStack.top();
+ while (offset) {
+ uint32_t* peek = fWriter.peek32(offset);
+ offset = *peek;
+ *peek = restoreOffset;
}
+ fRestoreOffsetStack.pop();
addDraw(RESTORE);
validate();