Fix valgrind problem caused by reading text[-1].
authorBrian <brian@yutani.localnet.net>
Thu, 19 Apr 2007 20:15:11 +0000 (14:15 -0600)
committerBrian <brian@yutani.localnet.net>
Thu, 19 Apr 2007 20:15:11 +0000 (14:15 -0600)
src/mesa/shader/grammar/grammar.c

index 989e9544911688a8f2aa7a9d73772460bb54cfff..a9775961d3a6577654cc072c8f3e423847e578e6 100644 (file)
@@ -2693,14 +2693,16 @@ fast_match (dict *di, const byte *text, int *index, rule *ru, int *_PP, bytepool
 
         if (status == mr_matched)
         {
-            if (sp->m_emits != NULL)
-                if (emit_push (sp->m_emits, _BP->_F + _P, text[ind - 1], save_ind, &ctx))
+            if (sp->m_emits != NULL) {
+                const byte ch = (ind <= 0) ? 0 : text[ind - 1];
+                if (emit_push (sp->m_emits, _BP->_F + _P, ch, save_ind, &ctx))
                 {
                     free_regbyte_ctx_stack (ctx, *rbc);
                     return mr_internal_error;
                 }
 
-            _P = _P2;
+           }
+           _P = _P2;
         }
 
         /* if the rule operator is a logical or, we pick up the first matching specifier */