33 lines
1.4 KiB
Diff
33 lines
1.4 KiB
Diff
commit 185320ae13163995ea61e38104ab5aeaeb28d8e5
|
|
Author: Eric Anholt <eric@anholt.net>
|
|
Date: Tue Jan 15 15:08:34 2008 -0800
|
|
|
|
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 a293dd2..1656dc9 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 {
|