On Nov 28, 2007, at 14:46 , Ryan Davis wrote: > The problem is that the void_expr macro is used in void_stmts and > modifies the tree, but only if -v is on: > > #define void_expr(node) void_expr0((node) = remove_begin(node)) > > static void > void_stmts(node) > NODE *node; > { > if (!RTEST(ruby_verbose)) return; > if (!node) return; > if (nd_type(node) != NODE_BLOCK) return; > > for (;;) { > if (!node->nd_next) return; > void_expr(node->nd_head); // <--- modifies tree if > -v !!! > node = node->nd_next; > } > } untested, but this should be safe(r): % svn diff parse.y Index: parse.y =================================================================== --- parse.y (revision 14044) +++ parse.y (working copy) @@ -5206,7 +5206,7 @@ for (;;) { if (!node->nd_next) return; - void_expr(node->nd_head); + void_expr0(remove_begin(node->nd_head)); node = node->nd_next; } }