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@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) {