From 7813cbc86985ad0656167bb583a9c7e75ba3ad94 Mon Sep 17 00:00:00 2001 From: Shigio YAMAGUCHI Date: Thu, 18 Aug 2011 00:07:21 +0300 Subject: Fix the output of branch marks in tree mode. * src/output.c (direct_tree) (inverted_tree): Use is_last instead of is_printable to decide what mark to use for the line. * tests/bartest.at: New testcase. * tests/Makefile.am: Add bartest.at * tests/testsuite.at: Include bartest.at --- src/output.c | 6 +++--- tests/Makefile.am | 1 + tests/bartest.at | 43 +++++++++++++++++++++++++++++++++++++++++++ tests/testsuite.at | 1 + 4 files changed, 48 insertions(+), 3 deletions(-) create mode 100644 tests/bartest.at diff --git a/src/output.c b/src/output.c index 47c3c47..bef37fd 100644 --- a/src/output.c +++ b/src/output.c @@ -1,5 +1,5 @@ /* This file is part of GNU cflow - Copyright (C) 1997, 2005, 2007, 2009, 2010 Sergey Poznyakoff + Copyright (C) 1997, 2005, 2007, 2009, 2010, 2011 Sergey Poznyakoff GNU cflow is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -313,7 +313,7 @@ direct_tree(int lev, int last, Symbol *sym) return; set_active(sym); for (p = linked_list_head(sym->callee); p; p = p->next) { - set_level_mark(lev+1, is_printable(p->next)); + set_level_mark(lev+1, !is_last(p)); direct_tree(lev+1, is_last(p), (Symbol*)p->data); } clear_active(sym); @@ -337,7 +337,7 @@ inverted_tree(int lev, int last, Symbol *sym) return; set_active(sym); for (p = linked_list_head(sym->caller); p; p = p->next) { - set_level_mark(lev+1, is_printable(p->next)); + set_level_mark(lev+1, !is_last(p)); inverted_tree(lev+1, is_last(p), (Symbol*)p->data); } clear_active(sym); diff --git a/tests/Makefile.am b/tests/Makefile.am index 6ec2da8..2fe8734 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -43,6 +43,7 @@ $(srcdir)/package.m4: $(top_srcdir)/configure.ac TESTSUITE_AT = \ attr.at\ awrapper.at\ + bartest.at\ direct.at\ fdecl.at\ funcarg.at\ diff --git a/tests/bartest.at b/tests/bartest.at new file mode 100644 index 0000000..e25eac2 --- /dev/null +++ b/tests/bartest.at @@ -0,0 +1,43 @@ +# This file is part of GNU cflow testsuite. -*- Autotest -*- +# Copyright (C) 2011 Sergey Poznyakoff +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 3, or (at +# your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Cflow 1.3 sometimes failed to display '|' in tree output. +# Testcase by Shigio YAMAGUCHI. + +AT_SETUP([vertical bar in tree output]) +AT_KEYWORDS([tree bartest]) + +CFLOW_OPT([--tree --number],[ +CFLOW_CHECK( +[int main() +{ + hello(NULL); + printf("Hello\n"); +} +hello(const char *data) +{ + printf("Hello\n"); +} +], +[ 1 +-main() + 2 +-hello() + 3 | \-printf() + 4 \-printf()]) +]) + +AT_CLEANUP + + diff --git a/tests/testsuite.at b/tests/testsuite.at index 8aac400..f15980c 100644 --- a/tests/testsuite.at +++ b/tests/testsuite.at @@ -67,5 +67,6 @@ m4_include([nfparg.at]) m4_include([nfarg.at]) m4_include([hiding.at]) m4_include([multi.at]) +m4_include([bartest.at]) # End of testsuite.at -- cgit v1.2.1