Merge "Don't crash when presented with non-roundRect clipping outline." into oc-dev

This commit is contained in:
TreeHugger Robot
2017-05-31 16:04:23 +00:00
committed by Android (Google) Code Review

View File

@@ -61,8 +61,17 @@ void RenderNodeDrawable::drawBackwardsProjectedNodes(SkCanvas* canvas, const Ski
static void clipOutline(const Outline& outline, SkCanvas* canvas, const SkRect* pendingClip) {
Rect possibleRect;
float radius;
LOG_ALWAYS_FATAL_IF(!outline.getAsRoundRect(&possibleRect, &radius),
"clipping outlines should be at most roundedRects");
/* To match the existing HWUI behavior we only supports rectangles or
* rounded rectangles; passing in a more complicated outline fails silently.
*/
if (!outline.getAsRoundRect(&possibleRect, &radius)) {
if (pendingClip) {
canvas->clipRect(*pendingClip);
}
return;
}
SkRect rect = possibleRect.toSkRect();
if (radius != 0.0f) {
if (pendingClip && !pendingClip->contains(rect)) {