diff options
author | Shigio YAMAGUCHI <shigio@gnu.org> | 2011-08-18 00:07:21 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-08-18 00:13:24 +0300 |
commit | 7813cbc86985ad0656167bb583a9c7e75ba3ad94 (patch) | |
tree | a913c7581bb72d4620b60ee7d2910a09b9c91577 | |
parent | 7885357f42161f4b3481054d2328c8199635b5d8 (diff) | |
download | cflow-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
-rw-r--r-- | src/output.c | 6 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/bartest.at | 43 | ||||
-rw-r--r-- | tests/testsuite.at | 1 |
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 @@ | |||
1 | /* This file is part of GNU cflow | 1 | /* This file is part of GNU cflow |
2 | Copyright (C) 1997, 2005, 2007, 2009, 2010 Sergey Poznyakoff | 2 | Copyright (C) 1997, 2005, 2007, 2009, 2010, 2011 Sergey Poznyakoff |
3 | 3 | ||
4 | GNU cflow is free software; you can redistribute it and/or modify | 4 | GNU cflow is free software; you can redistribute it and/or modify |
5 | it under the terms of the GNU General Public License as published by | 5 | 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) | |||
313 | return; | 313 | return; |
314 | set_active(sym); | 314 | set_active(sym); |
315 | for (p = linked_list_head(sym->callee); p; p = p->next) { | 315 | for (p = linked_list_head(sym->callee); p; p = p->next) { |
316 | set_level_mark(lev+1, is_printable(p->next)); | 316 | set_level_mark(lev+1, !is_last(p)); |
317 | direct_tree(lev+1, is_last(p), (Symbol*)p->data); | 317 | direct_tree(lev+1, is_last(p), (Symbol*)p->data); |
318 | } | 318 | } |
319 | clear_active(sym); | 319 | clear_active(sym); |
@@ -337,7 +337,7 @@ inverted_tree(int lev, int last, Symbol *sym) | |||
337 | return; | 337 | return; |
338 | set_active(sym); | 338 | set_active(sym); |
339 | for (p = linked_list_head(sym->caller); p; p = p->next) { | 339 | for (p = linked_list_head(sym->caller); p; p = p->next) { |
340 | set_level_mark(lev+1, is_printable(p->next)); | 340 | set_level_mark(lev+1, !is_last(p)); |
341 | inverted_tree(lev+1, is_last(p), (Symbol*)p->data); | 341 | inverted_tree(lev+1, is_last(p), (Symbol*)p->data); |
342 | } | 342 | } |
343 | clear_active(sym); | 343 | 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 | |||
43 | TESTSUITE_AT = \ | 43 | TESTSUITE_AT = \ |
44 | attr.at\ | 44 | attr.at\ |
45 | awrapper.at\ | 45 | awrapper.at\ |
46 | bartest.at\ | ||
46 | direct.at\ | 47 | direct.at\ |
47 | fdecl.at\ | 48 | fdecl.at\ |
48 | funcarg.at\ | 49 | 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 @@ | |||
1 | # This file is part of GNU cflow testsuite. -*- Autotest -*- | ||
2 | # Copyright (C) 2011 Sergey Poznyakoff | ||
3 | # | ||
4 | # This program is free software; you can redistribute it and/or | ||
5 | # modify it under the terms of the GNU General Public License as | ||
6 | # published by the Free Software Foundation; either version 3, or (at | ||
7 | # your option) any later version. | ||
8 | # | ||
9 | # This program is distributed in the hope that it will be useful, but | ||
10 | # WITHOUT ANY WARRANTY; without even the implied warranty of | ||
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
12 | # General Public License for more details. | ||
13 | # | ||
14 | # You should have received a copy of the GNU General Public License | ||
15 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | |||
17 | # Cflow 1.3 sometimes failed to display '|' in tree output. | ||
18 | # Testcase by Shigio YAMAGUCHI. | ||
19 | |||
20 | AT_SETUP([vertical bar in tree output]) | ||
21 | AT_KEYWORDS([tree bartest]) | ||
22 | |||
23 | CFLOW_OPT([--tree --number],[ | ||
24 | CFLOW_CHECK( | ||
25 | [int main() | ||
26 | { | ||
27 | hello(NULL); | ||
28 | printf("Hello\n"); | ||
29 | } | ||
30 | hello(const char *data) | ||
31 | { | ||
32 | printf("Hello\n"); | ||
33 | } | ||
34 | ], | ||
35 | [ 1 +-main() <int main () at prog:1> | ||
36 | 2 +-hello() <hello (const char *data) at prog:6> | ||
37 | 3 | \-printf() | ||
38 | 4 \-printf()]) | ||
39 | ]) | ||
40 | |||
41 | AT_CLEANUP | ||
42 | |||
43 | |||
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]) | |||
67 | m4_include([nfarg.at]) | 67 | m4_include([nfarg.at]) |
68 | m4_include([hiding.at]) | 68 | m4_include([hiding.at]) |
69 | m4_include([multi.at]) | 69 | m4_include([multi.at]) |
70 | m4_include([bartest.at]) | ||
70 | 71 | ||
71 | # End of testsuite.at | 72 | # End of testsuite.at |