wined3d: Fix NULL dereference in generator function.

This commit is contained in:
Ivan Gyurdiev 2006-06-06 23:40:16 -04:00 committed by Alexandre Julliard
parent 4d66615bbb
commit 83a9666f9c
1 changed files with 9 additions and 9 deletions

View File

@ -623,6 +623,9 @@ void generate_base_shader(
shader_reg_maps reg_maps; shader_reg_maps reg_maps;
/* Initialize current parsing state */ /* Initialize current parsing state */
SHADER_OPCODE_ARG hw_arg;
hw_arg.shader = iface;
hw_arg.buffer = buffer;
This->baseShader.parse_state.current_row = 0; This->baseShader.parse_state.current_row = 0;
/* First pass: figure out which temporary and texture registers are used */ /* First pass: figure out which temporary and texture registers are used */
@ -662,22 +665,19 @@ void generate_base_shader(
/* Read opcode */ /* Read opcode */
opcode_token = *pToken++; opcode_token = *pToken++;
curOpcode = shader_get_opcode(iface, opcode_token); curOpcode = shader_get_opcode(iface, opcode_token);
hw_fct = (wined3d_settings.shader_mode == hw_fct = (curOpcode == NULL)? NULL:
SHADER_GLSL ? curOpcode->hw_glsl_fct : curOpcode->hw_fct); (wined3d_settings.shader_mode == SHADER_GLSL)?
curOpcode->hw_glsl_fct : curOpcode->hw_fct;
/* Unknown opcode and its parameters */ /* Unknown opcode and its parameters */
if (NULL == curOpcode) { if (NULL == curOpcode) {
FIXME("Unrecognized opcode: token=%08lX\n", opcode_token); FIXME("Unrecognized opcode: token=%08lX\n", opcode_token);
pToken += shader_skip_unrecognized(iface, pToken); pToken += shader_skip_unrecognized(iface, pToken);
/* If a generator function is set for current shader target, use it */ /* If a generator function is set for current shader target, use it */
} else if (hw_fct != NULL) { } else if (hw_fct != NULL) {
SHADER_OPCODE_ARG hw_arg;
hw_arg.shader = iface;
hw_arg.opcode = curOpcode; hw_arg.opcode = curOpcode;
hw_arg.buffer = buffer;
if (curOpcode->num_params > 0) { if (curOpcode->num_params > 0) {