# HG changeset patch # User Thinker K.F. Li # Date 1284091480 -28800 # Node ID 3808a6ffc88195211c58e88fdd5297c54504f60f # Parent cf0d2482762455eea80ab900fcf600cf170a83be Fix logical bug walk_code_tree() and duplicate function calls diff -r cf0d24827624 -r 3808a6ffc881 src/cospy.c --- a/src/cospy.c Fri Sep 10 11:43:43 2010 +0800 +++ b/src/cospy.c Fri Sep 10 12:04:40 2010 +0800 @@ -141,11 +141,10 @@ if(expr == NULL) return; + if(visit && TREE_VISITED(expr)) + return; TREE_VISITED(expr) = visit; - if(TREE_VISITED(expr)) - return; - code = TREE_CODE(expr); if(cb && (accept_code == -1 || code == accept_code)) @@ -457,6 +456,9 @@ EXPR_FILENAME(expr), EXPR_LINENO(expr), TREE_CODE(parent)); + + /* Do a function call twice */ + tree_insert_before(expr, expr, parent); } /*! \brief Find all call expression in a code block.