From 83a9666f9c8a80ef55b1807174d0d660f9991277 Mon Sep 17 00:00:00 2001 From: Ivan Gyurdiev Date: Tue, 6 Jun 2006 23:40:16 -0400 Subject: [PATCH] wined3d: Fix NULL dereference in generator function. --- dlls/wined3d/baseshader.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index ee54a5ed28d..1968a11ac30 100644 --- a/dlls/wined3d/baseshader.c +++ b/dlls/wined3d/baseshader.c @@ -623,6 +623,9 @@ void generate_base_shader( shader_reg_maps reg_maps; /* Initialize current parsing state */ + SHADER_OPCODE_ARG hw_arg; + hw_arg.shader = iface; + hw_arg.buffer = buffer; This->baseShader.parse_state.current_row = 0; /* First pass: figure out which temporary and texture registers are used */ @@ -662,22 +665,19 @@ void generate_base_shader( /* Read opcode */ opcode_token = *pToken++; curOpcode = shader_get_opcode(iface, opcode_token); - hw_fct = (wined3d_settings.shader_mode == - SHADER_GLSL ? curOpcode->hw_glsl_fct : curOpcode->hw_fct); + hw_fct = (curOpcode == NULL)? NULL: + (wined3d_settings.shader_mode == SHADER_GLSL)? + curOpcode->hw_glsl_fct : curOpcode->hw_fct; /* Unknown opcode and its parameters */ - if (NULL == curOpcode) { - FIXME("Unrecognized opcode: token=%08lX\n", opcode_token); - pToken += shader_skip_unrecognized(iface, pToken); + if (NULL == curOpcode) { + FIXME("Unrecognized opcode: token=%08lX\n", opcode_token); + pToken += shader_skip_unrecognized(iface, pToken); /* If a generator function is set for current shader target, use it */ } else if (hw_fct != NULL) { - SHADER_OPCODE_ARG hw_arg; - - hw_arg.shader = iface; hw_arg.opcode = curOpcode; - hw_arg.buffer = buffer; if (curOpcode->num_params > 0) {