From f11d33ba8eba0b81a5356a8495a32e2f4cecf56d Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Sat, 21 Mar 2020 13:12:08 -0400
Subject: [PATCH] Fix trying to bind textures to invalid uniform locations

---
 indra/newview/lldrawpoolavatar.cpp |  7 +++++--
 indra/newview/lldrawpoolwater.cpp  | 10 ++++++++--
 2 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/indra/newview/lldrawpoolavatar.cpp b/indra/newview/lldrawpoolavatar.cpp
index 2bd011972ff..a4b42e0df93 100644
--- a/indra/newview/lldrawpoolavatar.cpp
+++ b/indra/newview/lldrawpoolavatar.cpp
@@ -2229,12 +2229,15 @@ void LLDrawPoolAvatar::renderRigged(LLVOAvatar* avatar, U32 type, bool glow)
                 {
                     specular = face->getTexture(LLRender::SPECULAR_MAP);
                 }
-                if (specular)
+                if (specular && specular_channel > -1)
                 {
                     gGL.getTexUnit(specular_channel)->bind(specular);
                 }
                 
-				gGL.getTexUnit(normal_channel)->bind(face->getTexture(LLRender::NORMAL_MAP));
+				if (normal_channel > -1)
+				{
+					gGL.getTexUnit(normal_channel)->bind(face->getTexture(LLRender::NORMAL_MAP));
+				}
 				gGL.getTexUnit(sDiffuseChannel)->bind(face->getTexture(LLRender::DIFFUSE_MAP), false, true);
 
 
diff --git a/indra/newview/lldrawpoolwater.cpp b/indra/newview/lldrawpoolwater.cpp
index dc1a1cc91fb..5d8a45673d6 100644
--- a/indra/newview/lldrawpoolwater.cpp
+++ b/indra/newview/lldrawpoolwater.cpp
@@ -633,7 +633,10 @@ void LLDrawPoolWater::shade2(bool edge, LLGLSLShader* shader, const LLColor3& li
                 if (face)
                 {
                     LLVOWater* water = (LLVOWater*) face->getViewerObject();
-			        gGL.getTexUnit(diffTex)->bind(face->getTexture());
+					if (diffTex > -1)
+					{
+						gGL.getTexUnit(diffTex)->bind(face->getTexture());
+					}
 
                     if (water)
                     {
@@ -655,7 +658,10 @@ void LLDrawPoolWater::shade2(bool edge, LLGLSLShader* shader, const LLColor3& li
                 if (face)
                 {
                     LLVOWater* water = (LLVOWater*) face->getViewerObject();
-			        gGL.getTexUnit(diffTex)->bind(face->getTexture());
+					if (diffTex > -1)
+					{
+						gGL.getTexUnit(diffTex)->bind(face->getTexture());
+					}
 
                     if (water)
                     {
-- 
GitLab