Handle case createShader throws an exception.
Ensures the state of the class remains correct even if an unhandled
exception is thrown from this method.
Bug: b/176214704
Change-Id: I94504bb8aa4bd2dba45d116d5fa13da070a3b60f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/201621
Reviewed-by: Xavier Lepaul <xalep@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32963}
diff --git a/sdk/android/src/java/org/webrtc/GlGenericDrawer.java b/sdk/android/src/java/org/webrtc/GlGenericDrawer.java
index 92b4245..0e9718e 100644
--- a/sdk/android/src/java/org/webrtc/GlGenericDrawer.java
+++ b/sdk/android/src/java/org/webrtc/GlGenericDrawer.java
@@ -219,11 +219,14 @@
shader = currentShader;
} else {
// Allocate new shader.
- currentShaderType = shaderType;
+ currentShaderType = null;
if (currentShader != null) {
currentShader.release();
+ currentShader = null;
}
+
shader = createShader(shaderType);
+ currentShaderType = shaderType;
currentShader = shader;
shader.useProgram();