aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/core/SkPaint.cpp3
-rw-r--r--tests/PaintTest.cpp15
2 files changed, 18 insertions, 0 deletions
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index 9510e75c75..07d1c33bd4 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -1071,6 +1071,9 @@ SkScalar SkPaint::measureText(const void* textData, size_t length,
bounds->fBottom = SkScalarMul(bounds->fBottom, scale);
}
}
+ } else if (bounds) {
+ // ensure that even if we don't measure_text we still update the bounds
+ bounds->setEmpty();
}
return width;
}
diff --git a/tests/PaintTest.cpp b/tests/PaintTest.cpp
index ed790764ab..b08f22c082 100644
--- a/tests/PaintTest.cpp
+++ b/tests/PaintTest.cpp
@@ -97,12 +97,27 @@ static void regression_cubic(skiatest::Reporter* reporter) {
REPORTER_ASSERT(reporter, maxR.contains(strokeR));
}
+// found and fixed for android: not initializing rect for string's of length 0
+static void regression_measureText(skiatest::Reporter* reporter) {
+
+ SkPaint paint;
+ paint.setTextSize(SkFloatToScalar(12.0f));
+
+ SkRect r;
+ r.setLTRB(SK_ScalarNaN, SK_ScalarNaN, SK_ScalarNaN, SK_ScalarNaN);
+
+ // test that the rect was reset
+ paint.measureText("", 0, &r, SkFloatToScalar(1.0f));
+ REPORTER_ASSERT(reporter, r.isEmpty());
+}
+
static void TestPaint(skiatest::Reporter* reporter) {
// TODO add general paint tests
test_copy(reporter);
// regression tests
regression_cubic(reporter);
+ regression_measureText(reporter);
}
#include "TestClassDef.h"