summaryrefslogtreecommitdiffabout
authorShigio YAMAGUCHI <shigio@gnu.org>2011-08-17 21:07:21 (GMT)
committer Sergey Poznyakoff <gray@gnu.org.ua>2011-08-17 21:13:24 (GMT)
commit7813cbc86985ad0656167bb583a9c7e75ba3ad94 (patch) (side-by-side diff)
treea913c7581bb72d4620b60ee7d2910a09b9c91577
parent7885357f42161f4b3481054d2328c8199635b5d8 (diff)
downloadcflow-7813cbc86985ad0656167bb583a9c7e75ba3ad94.tar.gz
cflow-7813cbc86985ad0656167bb583a9c7e75ba3ad94.tar.bz2
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
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--src/output.c6
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/bartest.at43
-rw-r--r--tests/testsuite.at1
4 files changed, 48 insertions, 3 deletions
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
--- a/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 <http://www.gnu.org/licenses/>.
+
+# 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() <int main () at prog:1>
+ 2 +-hello() <hello (const char *data) at prog:6>
+ 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

Return to:

Send suggestions and report system problems to the System administrator.