Ivan Gyurdiev : wined3d: Fix NULL dereference in generator function.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Jun 7 09:13:40 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 83a9666f9c8a80ef55b1807174d0d660f9991277
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=83a9666f9c8a80ef55b1807174d0d660f9991277
Author: Ivan Gyurdiev <ivg2 at 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) {
More information about the wine-cvs
mailing list