diff options
author | Simon Marchi <simon.marchi@ericsson.com> | 2018-09-17 13:11:07 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@ericsson.com> | 2018-09-17 13:11:07 -0400 |
commit | 461464f22632163209937ba5128d1f9f32554ea3 (patch) | |
tree | aedb5efa545c00cbab381b348794437ce92b0c67 | |
parent | 04e2a1829ea137ac23ac96e98fd60f9d720dcdcb (diff) | |
download | gdb-461464f22632163209937ba5128d1f9f32554ea3.zip gdb-461464f22632163209937ba5128d1f9f32554ea3.tar.gz gdb-461464f22632163209937ba5128d1f9f32554ea3.tar.bz2 |
Fix use-after-move in compile/compile-cplus-types.c
Patch
d82b3862f12 ("compile: Remove non-const reference parameters")
introduced a regression in compile/compile-cplus-types.c. The new_scope
variable in compile_cplus_instance::enter_scope is used after it was
std::moved. This patch fixes it by referring to the back of the vector
where it was moved instead.
gdb/ChangeLog:
* compile/compile-cplus-types.c
(compile_cplus_instance::enter_scope): Don't use new_scope after
std::move.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/compile/compile-cplus-types.c | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 673d35b..419bffd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2018-09-17 Simon Marchi <simon.marchi@ericsson.com> + + * compile/compile-cplus-types.c + (compile_cplus_instance::enter_scope): Don't use new_scope after + std::move. + 2018-09-17 Tom Tromey <tom@tromey.com> * common/pathstuff.c (get_standard_cache_dir): Use diff --git a/gdb/compile/compile-cplus-types.c b/gdb/compile/compile-cplus-types.c index 75193d2..996fea5 100644 --- a/gdb/compile/compile-cplus-types.c +++ b/gdb/compile/compile-cplus-types.c @@ -261,7 +261,7 @@ compile_cplus_instance::enter_scope (compile_scope &&new_scope) if (debug_compile_cplus_scopes) { fprintf_unfiltered (gdb_stdlog, "entering new scope %s\n", - host_address_to_string (&new_scope)); + host_address_to_string (&m_scopes.back ())); } /* Push the global namespace. */ @@ -270,7 +270,7 @@ compile_cplus_instance::enter_scope (compile_scope &&new_scope) /* Push all other namespaces. Note that we do not push the last scope_component -- that's the actual type we are converting. */ std::for_each - (new_scope.begin (), new_scope.end () - 1, + (m_scopes.back ().begin (), m_scopes.back ().end () - 1, [this] (const scope_component &comp) { gdb_assert (TYPE_CODE (SYMBOL_TYPE (comp.bsymbol.symbol)) |