| Index: src/core/SkCanvas.cpp | 
| diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp | 
| index 905849254c7fcf5ad6689fe9354cc326ff395992..6c4cd272502aca824c05f77ffe762032b85fc0b4 100644 | 
| --- a/src/core/SkCanvas.cpp | 
| +++ b/src/core/SkCanvas.cpp | 
| @@ -349,7 +349,6 @@ public: | 
| if (rec && rec->fDevice) { | 
|  | 
| fMatrix = rec->fMatrix; | 
| -            fClip   = &((SkRasterClip*)&rec->fClip)->forceGetBW(); | 
| fRC     = &rec->fClip; | 
| fDevice = rec->fDevice; | 
| if (!fDevice->accessPixels(&fDst)) { | 
| @@ -367,10 +366,10 @@ public: | 
| } | 
|  | 
| SkBaseDevice* getDevice() const { return fDevice; } | 
| +    const SkRasterClip& getClip() const { return *fRC; } | 
| int getX() const { return fDevice->getOrigin().x(); } | 
| int getY() const { return fDevice->getOrigin().y(); } | 
| const SkMatrix& getMatrix() const { return *fMatrix; } | 
| -    const SkRegion& getClip() const { return *fClip; } | 
| const SkPaint* getPaint() const { return fPaint; } | 
|  | 
| private: | 
| @@ -2503,7 +2502,7 @@ void SkCanvas::DrawTextDecorations(const SkDraw& draw, const SkPaint& paint, | 
|  | 
| // nothing to draw | 
| if (text == nullptr || byteLength == 0 || | 
| -        draw.fClip->isEmpty() || | 
| +        draw.fRC->isEmpty() || | 
| (paint.getAlpha() == 0 && paint.getXfermode() == nullptr)) { | 
| return; | 
| } | 
| @@ -2994,7 +2993,7 @@ const SkPaint& SkCanvas::LayerIter::paint() const { | 
| return *paint; | 
| } | 
|  | 
| -const SkRegion& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); } | 
| +const SkRasterClip& SkCanvas::LayerIter::clip() const { return fImpl->getClip(); } | 
| int SkCanvas::LayerIter::x() const { return fImpl->getX(); } | 
| int SkCanvas::LayerIter::y() const { return fImpl->getY(); } | 
|  | 
|  |