Fixes error handling in ShaderSource
TRAC #11664
Signed-off-by: Nicolas Capens
Signed-off-by: Daniel Koch

Author:    Shannon Woods

git-svn-id: https://angleproject.googlecode.com/svn/trunk@135 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/libGLESv2.cpp b/src/libGLESv2/libGLESv2.cpp
index 12fded6..799cedf 100644
--- a/src/libGLESv2/libGLESv2.cpp
+++ b/src/libGLESv2/libGLESv2.cpp
@@ -3225,7 +3225,7 @@
 
     try
     {
-        if (shader == 0 || count < 0)
+        if (count < 0)
         {
             return error(GL_INVALID_VALUE);
         }
@@ -3238,7 +3238,14 @@
 
             if (!shaderObject)
             {
-                return error(GL_INVALID_OPERATION);
+                if (context->getProgram(shader))
+                {
+                    return error(GL_INVALID_OPERATION);
+                }
+                else
+                {
+                    return error(GL_INVALID_VALUE);
+                }
             }
 
             shaderObject->setSource(count, string, length);