Count the correct number of pos using text encoding.

Otherwise, the following will crash:

out/ASAN/dm --config t8888 --verbose --src gm -m skbug_5321

Bug: skia:
Change-Id: I9b1d3412b9695b0fbd8a9afb0e6d3ae7159aeee6
Reviewed-on: https://skia-review.googlesource.com/123750
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Auto-Submit: Yuqian Li <liyuqian@google.com>
This commit is contained in:
Yuqian Li 2018-04-26 10:32:47 -04:00 committed by Skia Commit-Bot
parent c79e2d1551
commit f695cf117f

View File

@ -220,7 +220,7 @@ void SkThreadedBMPDevice::drawText(const void* text, size_t len, SkScalar x, SkS
void SkThreadedBMPDevice::drawPosText(const void* text, size_t len, const SkScalar xpos[],
int scalarsPerPos, const SkPoint& offset, const SkPaint& paint) {
char* clonedText = this->cloneArray((const char*)text, len);
SkScalar* clonedXpos = this->cloneArray(xpos, len * scalarsPerPos);
SkScalar* clonedXpos = this->cloneArray(xpos, paint.countText(text, len) * scalarsPerPos);
SkRect drawBounds = SkRectPriv::MakeLargest(); // TODO tighter drawBounds
fQueue.push(drawBounds, [=](SkArenaAlloc*, const DrawState& ds, const SkIRect& tileBounds){
TileDraw(ds, tileBounds).drawPosText(clonedText, len, clonedXpos, scalarsPerPos, offset,