| Index: src/core/SkXfermode.cpp
|
| diff --git a/src/core/SkXfermode.cpp b/src/core/SkXfermode.cpp
|
| index 1efd9efc4b2eae7a7ba7020e99a88d28e9e963f2..c0039ec64a8b91be4b65dac3d2ea9372672e6eff 100644
|
| --- a/src/core/SkXfermode.cpp
|
| +++ b/src/core/SkXfermode.cpp
|
| @@ -1438,6 +1438,10 @@ protected:
|
| fDstCoeff = rec.fDC;
|
| // now update our function-ptr in the super class
|
| this->INHERITED::setProc(rec.fProc);
|
| +
|
| + buffer.validateData(IsValidMode(fMode) &&
|
| + IsValidCoeff(fSrcCoeff) &&
|
| + IsValidCoeff(fDstCoeff));
|
| }
|
|
|
| virtual void flatten(SkFlattenableWriteBuffer& buffer) const SK_OVERRIDE {
|
| @@ -1781,6 +1785,10 @@ bool SkXfermode::AsCoeff(const SkXfermode* xfer, Coeff* src, Coeff* dst) {
|
| return xfer->asCoeff(src, dst);
|
| }
|
|
|
| +bool SkXfermode::IsValidCoeff(Coeff coeff) {
|
| + return coeff >= 0 && coeff < kCoeffCount;
|
| +}
|
| +
|
| bool SkXfermode::IsMode(const SkXfermode* xfer, Mode mode) {
|
| // if xfer==null then the mode is srcover
|
| Mode m = kSrcOver_Mode;
|
| @@ -1790,6 +1798,10 @@ bool SkXfermode::IsMode(const SkXfermode* xfer, Mode mode) {
|
| return mode == m;
|
| }
|
|
|
| +bool SkXfermode::IsValidMode(Mode mode) {
|
| + return (mode >= 0) && (mode <= SkXfermode::kLastMode);
|
| +}
|
| +
|
| ///////////////////////////////////////////////////////////////////////////////
|
| //////////// 16bit xfermode procs
|
|
|
|
|