diff options
author | 2018-06-01 14:42:53 -0400 | |
---|---|---|
committer | 2018-06-04 15:47:29 +0000 | |
commit | 7c93472b079a99a33d6d4d8aae269488c94b1ce4 (patch) | |
tree | ce9dd38b76628f3b1f912433a628e83053899b11 /src | |
parent | 5059541dcc1950107ffeed930f85d986f4b5d613 (diff) |
Add null checks for GrSkSLtoGLSL to GrGLProgramBuilder
Bug: chromium:845351
Change-Id: I06c4114f9b2cd0609fcf7b7ce6d4a80a00ca85c3
Reviewed-on: https://skia-review.googlesource.com/131525
Auto-Submit: Brian Salomon <bsalomon@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gpu/gl/builders/GrGLProgramBuilder.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.cpp b/src/gpu/gl/builders/GrGLProgramBuilder.cpp index 4ffc1ecf22..071a091388 100644 --- a/src/gpu/gl/builders/GrGLProgramBuilder.cpp +++ b/src/gpu/gl/builders/GrGLProgramBuilder.cpp @@ -195,6 +195,10 @@ GrGLProgram* GrGLProgramBuilder::finalize() { fFS.fCompilerStrings.count(), settings, &glsl); + if (!fs) { + this->cleanupProgram(programID, shadersToDelete); + return nullptr; + } inputs = fs->fInputs; if (inputs.fRTHeight) { this->addRTHeightUniform(SKSL_RTHEIGHT_NAME); @@ -213,9 +217,9 @@ GrGLProgram* GrGLProgramBuilder::finalize() { fVS.fCompilerStrings.count(), settings, &glsl); - if (!this->compileAndAttachShaders(glsl.c_str(), glsl.size(), programID, - GR_GL_VERTEX_SHADER, &shadersToDelete, settings, - inputs)) { + if (!vs || !this->compileAndAttachShaders(glsl.c_str(), glsl.size(), programID, + GR_GL_VERTEX_SHADER, &shadersToDelete, settings, + inputs)) { this->cleanupProgram(programID, shadersToDelete); return nullptr; } @@ -238,13 +242,12 @@ GrGLProgram* GrGLProgramBuilder::finalize() { fGS.fCompilerStrings.count(), settings, &glsl); - if (!this->compileAndAttachShaders(glsl.c_str(), glsl.size(), programID, - GR_GL_GEOMETRY_SHADER, &shadersToDelete, settings, - inputs)) { + if (!gs || !this->compileAndAttachShaders(glsl.c_str(), glsl.size(), programID, + GR_GL_GEOMETRY_SHADER, &shadersToDelete, + settings, inputs)) { this->cleanupProgram(programID, shadersToDelete); return nullptr; } - } this->bindProgramResourceLocations(programID); |