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.
This commit is contained in:
Simon Marchi
2018-09-17 13:11:07 -04:00
parent 04e2a1829e
commit 461464f226
2 changed files with 8 additions and 2 deletions

View File

@ -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))