Add checks for TextureSampler count in text GeoProcs.
Chrome is seeing unexplained segfaults when trying to access the n-1th
textureSampler while creating textOp GeoProcs -- it's possible that's
because n is 0. Also add checks to make sure n is not > kMaxTextures.
Bug: chromium:1027314
Change-Id: I65a5472980bab37d580b3f237a132a8b23794abe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/255985
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
diff --git a/src/gpu/effects/GrDistanceFieldGeoProc.cpp b/src/gpu/effects/GrDistanceFieldGeoProc.cpp
index c1670ea..9196449 100644
--- a/src/gpu/effects/GrDistanceFieldGeoProc.cpp
+++ b/src/gpu/effects/GrDistanceFieldGeoProc.cpp
@@ -253,6 +253,8 @@
int numProxies,
const GrSamplerState& params) {
SkASSERT(numProxies <= kMaxTextures);
+ // Just to make sure we don't try to add too many proxies
+ numProxies = SkTMin(numProxies, kMaxTextures);
if (!fTextureSamplers[0].isInitialized()) {
fAtlasDimensions = proxies[0]->dimensions();
@@ -548,6 +550,8 @@
int numProxies,
const GrSamplerState& params) {
SkASSERT(numProxies <= kMaxTextures);
+ // Just to make sure we don't try to add too many proxies
+ numProxies = SkTMin(numProxies, kMaxTextures);
if (!fTextureSamplers[0].isInitialized()) {
fAtlasDimensions = proxies[0]->dimensions();
@@ -874,6 +878,8 @@
int numProxies,
const GrSamplerState& params) {
SkASSERT(numProxies <= kMaxTextures);
+ // Just to make sure we don't try to add too many proxies
+ numProxies = SkTMin(numProxies, kMaxTextures);
if (!fTextureSamplers[0].isInitialized()) {
fAtlasDimensions = proxies[0]->dimensions();