mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-02 04:27:46 +08:00
gdb/
* parse.c (parse_exp_in_context): New variable inner_chain. Call make_cleanup_restore_current_language. Call set_language. Move OLD_CHAIN and INNER_CHAIN cleanups. * utils.c (do_restore_current_language) (make_cleanup_restore_current_language): New functions. * utils.h (make_cleanup_restore_current_language): New declaration. gdb/testsuite/ * gdb.cp/parse-lang.cc: New file. * gdb.cp/parse-lang.exp: New file.
This commit is contained in:
22
gdb/utils.c
22
gdb/utils.c
@ -503,6 +503,28 @@ make_cleanup_free_so (struct so_list *so)
|
||||
return make_cleanup (do_free_so, so);
|
||||
}
|
||||
|
||||
/* Helper for make_cleanup_restore_current_language. */
|
||||
|
||||
static void
|
||||
do_restore_current_language (void *p)
|
||||
{
|
||||
enum language saved_lang = (uintptr_t) p;
|
||||
|
||||
set_language (saved_lang);
|
||||
}
|
||||
|
||||
/* Remember the current value of CURRENT_LANGUAGE and make it restored when
|
||||
the cleanup is run. */
|
||||
|
||||
struct cleanup *
|
||||
make_cleanup_restore_current_language (void)
|
||||
{
|
||||
enum language saved_lang = current_language->la_language;
|
||||
|
||||
return make_cleanup (do_restore_current_language,
|
||||
(void *) (uintptr_t) saved_lang);
|
||||
}
|
||||
|
||||
/* This function is useful for cleanups.
|
||||
Do
|
||||
|
||||
|
Reference in New Issue
Block a user