mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-18 12:24:38 +08:00
Missing do_cleanups in ada_make_symbol_completion_list.
This results in an internal-warning when trying the completion when in Ada mode: (gdb) b simple<TAB> /[...]/cleanups.c:265: internal-warning: restore_my_cleanups has found a stale cleanup A problem internal to GDB has been detected, further debugging may prove unreliable. Quit this debugging session? (y or n) gdb/ChangeLog: * ada-lang.c (ada_make_symbol_completion_list): Make sure all cleanups are done before returning from this function. gdb/testsuite/ChangeLog: * gdb.ada/complete.exp: Add test verifying completion using the "tab" key.
This commit is contained in:
parent
d5c48113b6
commit
b8fea896fe
@ -1,3 +1,8 @@
|
||||
2013-05-16 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* ada-lang.c (ada_make_symbol_completion_list): Make sure
|
||||
all cleanups are done before returning from this function.
|
||||
|
||||
2013-05-15 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* utils.h: #include "exceptions.h".
|
||||
|
@ -5841,6 +5841,7 @@ ada_make_symbol_completion_list (const char *text0, const char *word,
|
||||
struct block *b, *surrounding_static_block = 0;
|
||||
int i;
|
||||
struct block_iterator iter;
|
||||
struct cleanup *old_chain = make_cleanup (null_cleanup, NULL);
|
||||
|
||||
gdb_assert (code == TYPE_CODE_UNDEF);
|
||||
|
||||
@ -5941,6 +5942,7 @@ ada_make_symbol_completion_list (const char *text0, const char *word,
|
||||
}
|
||||
}
|
||||
|
||||
do_cleanups (old_chain);
|
||||
return completions;
|
||||
}
|
||||
|
||||
|
@ -1,3 +1,8 @@
|
||||
2013-05-16 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* gdb.ada/complete.exp: Add test verifying completion using
|
||||
the "tab" key.
|
||||
|
||||
2013-05-15 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* gdb.base/fixsection.c: Remove attribution.
|
||||
|
@ -175,4 +175,19 @@ test_gdb_complete "pck." \
|
||||
test_gdb_complete "<pck__my" \
|
||||
"p <pck__my_global_variable>"
|
||||
|
||||
|
||||
# Very simple completion, but using the interactive form, this time.
|
||||
# The verification we are trying to make involves the event loop,
|
||||
# and using the "complete" command is not sufficient to reproduce
|
||||
# the original problem.
|
||||
set test "interactive complete 'print some'"
|
||||
send_gdb "print some\t"
|
||||
gdb_test_multiple "" "$test" {
|
||||
-re "^print some_local_variable $" {
|
||||
send_gdb "\n"
|
||||
gdb_test_multiple "" "$test" {
|
||||
-re " = 1$eol$gdb_prompt $" {
|
||||
pass "$test"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user