GL: Don't leak shader objects when program linking fails

Change-Id: I9e0895811176c795cafd356495802128539e4cab
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/240278
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/src/gpu/gl/builders/GrGLProgramBuilder.cpp b/src/gpu/gl/builders/GrGLProgramBuilder.cpp
index 98b6a88..233e96e 100644
--- a/src/gpu/gl/builders/GrGLProgramBuilder.cpp
+++ b/src/gpu/gl/builders/GrGLProgramBuilder.cpp
@@ -381,7 +381,7 @@
         GL_CALL(LinkProgram(programID));
         if (checkLinked) {
             if (!this->checkLinkStatus(programID, errorHandler, sksl, glsl)) {
-                GL_CALL(DeleteProgram(programID));
+                cleanup_program(fGpu, programID, shadersToDelete);
                 return nullptr;
             }
         }