Module: wine Branch: refs/heads/master Commit: 83a9666f9c8a80ef55b1807174d0d660f9991277 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=83a9666f9c8a80ef55b18071... Author: Ivan Gyurdiev <ivg2(a)cornell.edu> Date: Tue Jun 6 23:40:16 2006 -0400 wined3d: Fix NULL dereference in generator function. --- dlls/wined3d/baseshader.c | 18 +++++++++--------- 1 files changed, 9 insertions(+), 9 deletions(-) diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index ee54a5e..1968a11 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) {