glsl: Make sure shader source isn't NULL.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 7 Sep 2010 23:25:53 +0000 (16:25 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Tue, 7 Sep 2010 23:25:53 +0000 (16:25 -0700)
This should only occur if glCompileShader is called without a prior call
to glShaderSource.  An empty source program should be the empty string.

src/mesa/program/ir_to_mesa.cpp

index 1a260c7e5366bc63738c7ab568ee2b2703e9367d..4f6535fa47953fa501eb9a8084fe1da2834ff04e 100644 (file)
@@ -2755,6 +2755,14 @@ _mesa_glsl_compile_shader(GLcontext *ctx, struct gl_shader *shader)
       new(shader) _mesa_glsl_parse_state(ctx, shader->Type, shader);
 
    const char *source = shader->Source;
+   /* Check if the user called glCompileShader without first calling
+    * glShaderSource.  This should fail to compile, but not raise a GL_ERROR.
+    */
+   if (source == NULL) {
+      shader->CompileStatus = GL_FALSE;
+      return;
+   }
+
    state->error = preprocess(state, &source, &state->info_log,
                             &ctx->Extensions);