aboutsummaryrefslogtreecommitdiff
path: root/treexpr.c
diff options
context:
space:
mode:
authorDavid Barksdale <amatus.amongus@gmail.com>2008-05-15 22:00:26 +0000
committerDavid Barksdale <amatus.amongus@gmail.com>2008-05-15 22:00:26 +0000
commit54506c4b495bd680ea4a62e5ab97be51f968cc09 (patch)
treeda951fbbfbbcac074b9488391eabb4733ffa58af /treexpr.c
parentcf308c8cdbc3209f31d45f5ed28929f699d9837c (diff)
There is a bug in tree_process() that mixes the start state with the final
state from the last run of the machine. This can cause extra matches to be reported.
Diffstat (limited to 'treexpr.c')
-rw-r--r--treexpr.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/treexpr.c b/treexpr.c
index 3b6a836..99d4ff6 100644
--- a/treexpr.c
+++ b/treexpr.c
@@ -990,6 +990,7 @@ int tree_process( struct machine *m, xmlNodePtr node )
m->next_state = zalloc( N( m->next_state, m->states ) * sizeof( *m->next_state ));
// our inital current state is E(start)
+ memset( m->cur_state, 0, N( m->cur_state, m->states ) * sizeof( *m->cur_state ));
OR( m->cur_state, m->E[m->start->num], m->states );
// main loop, terminate when we run out of input or when there's no states in the cur_state bitmask