aboutsummaryrefslogtreecommitdiff
path: root/gprof/call_graph.h
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2018-12-08 15:03:29 +0000
committerPedro Alves <palves@redhat.com>2018-12-08 15:03:29 +0000
commit73e8dc90a8a94bc52e29596b1cc176b882fbbc8e (patch)
treeb1ab53e4e6cde9695e59eef91a210008f632680d /gprof/call_graph.h
parentc0ab2ae3cc9af434ba926015d82a39cdf42c70bf (diff)
downloadgdb-73e8dc90a8a94bc52e29596b1cc176b882fbbc8e.zip
gdb-73e8dc90a8a94bc52e29596b1cc176b882fbbc8e.tar.gz
gdb-73e8dc90a8a94bc52e29596b1cc176b882fbbc8e.tar.bz2
Merge forward-search/reverse-search, use gdb::def_vector, remove limit
Back in: commit 85ae1317add94adef4817927e89cff80b92813dd Author: Stan Shebs <shebs@codesourcery.com> AuthorDate: Thu Dec 8 02:27:47 1994 +0000 * source.c: Various cosmetic changes. (forward_search_command): Handle very long source lines correctly. a buffer with a hard limit was converted to a heap buffer: @@ -1228,15 +1284,26 @@ forward_search_command (regex, from_tty) stream = fdopen (desc, FOPEN_RT); clearerr (stream); while (1) { -/* FIXME!!! We walk right off the end of buf if we get a long line!!! */ - char buf[4096]; /* Should be reasonable??? */ - register char *p = buf; + static char *buf = NULL; + register char *p; + int cursize, newsize; + + cursize = 256; + buf = xmalloc (cursize); + p = buf; However, reverse_search_command has the exact same problem, and that wasn't fixed. We still have that "we walk right off" comment... Recently, the xmalloc above was replaced with a xrealloc, because as can be seen above, that 'buf' variable above was a static local, otherwise we'd be leaking. This commit replaces that and the associated manual buffer growing with a gdb::def_vector<char>. I don't think there's much point in reusing the buffer across command invocations. While doing this, I realized that reverse_search_command is almost identical to forward_search_command. So this commit factors out a common helper function instead of duplicating a lot of code. There are some tests for "forward-search" in gdb.base/list.exp, but since they use the "search" alias, they were a bit harder to find than expected. That's now fixed, both by testing both variants, and by adding some commentary. Also, there are no tests for the "reverse-search" command, so this commit adds some for that too. gdb/ChangeLog: 2018-12-08 Pedro Alves <palves@redhat.com> * source.c (forward_search_command): Rename to ... (search_command_helper): ... this. Add 'forward' parameter. Tweak to use a gdb::def_vector<char> instead of a xrealloc'ed buffer. Handle backward searches too. (forward_search_command, reverse_search_command): Reimplement by calling search_command_helper. gdb/testsuite/ChangeLog: 2018-12-08 Pedro Alves <palves@redhat.com> * gdb.base/list.exp (test_forward_search): Rename to ... (test_forward_reverse_search): ... this. Also test reverse-search and the forward-search alias.
Diffstat (limited to 'gprof/call_graph.h')
0 files changed, 0 insertions, 0 deletions