From: Eric Anholt Date: Tue, 15 Jan 2008 23:08:34 +0000 (-0800) Subject: Bug #13492: Only call ProgramStringNotify if program parsing succeeded. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=185320ae13163995ea61e38104ab5aeaeb28d8e5;p=mesa.git Bug #13492: Only call ProgramStringNotify if program parsing succeeded. Wine intentionally tries some out-of-spec programs to test strictness, and calling ProgramStringNotify on the results of a failed program parse resulted in crashes in the 965 driver. --- diff --git a/src/mesa/shader/arbprogram.c b/src/mesa/shader/arbprogram.c index a293dd2829b..1656dc94507 100644 --- a/src/mesa/shader/arbprogram.c +++ b/src/mesa/shader/arbprogram.c @@ -229,7 +229,7 @@ _mesa_ProgramStringARB(GLenum target, GLenum format, GLsizei len, struct gl_vertex_program *prog = ctx->VertexProgram.Current; _mesa_parse_arb_vertex_program(ctx, target, string, len, prog); - if (ctx->Driver.ProgramStringNotify) + if (ctx->Program.ErrorPos == -1 && ctx->Driver.ProgramStringNotify) ctx->Driver.ProgramStringNotify( ctx, target, &prog->Base ); } else if (target == GL_FRAGMENT_PROGRAM_ARB @@ -237,7 +237,7 @@ _mesa_ProgramStringARB(GLenum target, GLenum format, GLsizei len, struct gl_fragment_program *prog = ctx->FragmentProgram.Current; _mesa_parse_arb_fragment_program(ctx, target, string, len, prog); - if (ctx->Driver.ProgramStringNotify) + if (ctx->Program.ErrorPos == -1 && ctx->Driver.ProgramStringNotify) ctx->Driver.ProgramStringNotify( ctx, target, &prog->Base ); } else {