mesa: fix state.clip[n].plane parsing bug (bug 16611)
authorBrian Paul <brian.paul@tungstengraphics.com>
Wed, 9 Jul 2008 14:47:23 +0000 (08:47 -0600)
committerBrian Paul <brian.paul@tungstengraphics.com>
Wed, 9 Jul 2008 14:47:23 +0000 (08:47 -0600)
cherry-picked from master

src/mesa/shader/arbprogparse.c

index a6bbdc64f16cd6948cc6898994023285999eb684..ff583352cec8d3e26207ddc2f8b710845c4a7431 100644 (file)
@@ -1133,7 +1133,9 @@ parse_state_single_item (GLcontext * ctx, const GLubyte ** inst,
                          struct arb_program *Program,
                          gl_state_index state_tokens[STATE_LENGTH])
 {
-   switch (*(*inst)++) {
+   GLubyte token = *(*inst)++;
+
+   switch (token) {
       case STATE_MATERIAL_PARSER:
          state_tokens[0] = STATE_MATERIAL;
          state_tokens[1] = parse_face_type (inst);
@@ -1318,7 +1320,6 @@ parse_state_single_item (GLcontext * ctx, const GLubyte ** inst,
 
       case STATE_CLIP_PLANE:
          state_tokens[0] = STATE_CLIPPLANE;
-         state_tokens[1] = parse_integer (inst, Program);
          if (parse_clipplane_num (ctx, inst, Program,
                                   (GLint *) &state_tokens[1]))
             return 1;
@@ -1770,7 +1771,9 @@ parse_param_elements (GLcontext * ctx, const GLubyte ** inst,
    gl_state_index state_tokens[STATE_LENGTH] = {0, 0, 0, 0, 0};
    GLfloat const_values[4];
 
-   switch (*(*inst)++) {
+   GLubyte token = *(*inst)++;
+
+   switch (token) {
       case PARAM_STATE_ELEMENT:
          if (parse_state_single_item (ctx, inst, Program, state_tokens))
             return 1;