Undecorate uniform names when computing max length
TRAC #12050
Signed-off-by: Andrew Lewycky
Signed-off-by: Daniel Koch

Author:    Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@200 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Program.cpp b/src/libGLESv2/Program.cpp
index 10ab4a1..aa74319 100644
--- a/src/libGLESv2/Program.cpp
+++ b/src/libGLESv2/Program.cpp
@@ -1342,7 +1342,7 @@
     return 0;
 }
 
-// This methods needs to match OutputHLSL::decorate
+// This method needs to match OutputHLSL::decorate
 std::string Program::decorate(const std::string &string)
 {
     if (string.substr(0, 3) != "gl_" && string.substr(0, 3) != "dx_")
@@ -1355,6 +1355,18 @@
     }
 }
 
+std::string Program::undecorate(const std::string &string)
+{
+    if (string.substr(0, 1) == "_")
+    {
+        return string.substr(1);
+    }
+    else
+    {
+        return string;
+    }
+}
+
 bool Program::applyUniform1bv(GLint location, GLsizei count, const GLboolean *v)
 {
     BOOL *vector = new BOOL[count];
@@ -2118,14 +2130,9 @@
 
     if (bufsize > 0)
     {
-        const char *string = mUniforms[uniform]->name.c_str();
+        std::string string = undecorate(mUniforms[uniform]->name);
 
-        if(string[0] == '_')   // Undecorate
-        {
-            string++;
-        }
-
-        strncpy(name, string, bufsize);
+        strncpy(name, string.c_str(), bufsize);
         name[bufsize - 1] = '\0';
 
         if (length)
@@ -2162,7 +2169,7 @@
     {
         if (!mUniforms[uniformIndex]->name.empty() && mUniforms[uniformIndex]->name.substr(0, 3) != "dx_")
         {
-            maxLength = std::max((int)(mUniforms[uniformIndex]->name.length() + 1), maxLength);
+            maxLength = std::max((int)(undecorate(mUniforms[uniformIndex]->name).length() + 1), maxLength);
         }
     }