Stop valgrind bot from crashing

make_surface is returning nullptr, resulting in an invalid read.

Add an error message with debugging information and skip this
iteration.

Also switch to cleaner for loop syntax.

BUG=skia:5282
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1959173002

Review-Url: https://codereview.chromium.org/1959173002
This commit is contained in:
scroggo 2016-05-09 13:20:58 -07:00 committed by Commit bot
parent 97fd2d42b9
commit e6cad6b370

View File

@ -85,7 +85,7 @@ protected:
const struct {
SkPixelGeometry fGeo;
const char* fLabel;
} rec[] = {
} recs[] = {
{ kUnknown_SkPixelGeometry, "Unknown" },
{ kRGB_H_SkPixelGeometry, "RGB_H" },
{ kBGR_H_SkPixelGeometry, "BGR_H" },
@ -97,10 +97,16 @@ protected:
for (int disallowAA = 0; disallowAA <= 1; ++disallowAA) {
for (int disallowDither = 0; disallowDither <= 1; ++disallowDither) {
SkScalar y = 0;
for (size_t i = 0; i < SK_ARRAY_COUNT(rec); ++i) {
auto surface(make_surface(ctx, info, rec[i].fGeo, disallowAA, disallowDither,
for (const auto& rec : recs) {
auto surface(make_surface(ctx, info, rec.fGeo, disallowAA, disallowDither,
gammaCorrect));
test_draw(surface->getCanvas(), rec[i].fLabel);
if (!surface) {
SkDebugf("failed to create surface! label: %s AA: %s dither: %s\n",
rec.fLabel, (disallowAA == 1 ? "disallowed" : "allowed"),
(disallowDither == 1 ? "disallowed" : "allowed"));
continue;
}
test_draw(surface->getCanvas(), rec.fLabel);
surface->draw(canvas, x, y, nullptr);
y += H;
}