Fix issue with string options and nested gcc_jit_contexts

gcc/jit/ChangeLog:
	* jit-recording.c (gcc::jit::recording::context::context): When
	copying string options from a parent context, take a copy of the
	underlying buffers, rather than simply copying the pointer.

From-SVN: r218972
This commit is contained in:
David Malcolm 2014-12-19 20:11:16 +00:00 committed by David Malcolm
parent 3eb239f48b
commit 5afd44e33b
2 changed files with 14 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2014-12-19 David Malcolm <dmalcolm@redhat.com>
* jit-recording.c (gcc::jit::recording::context::context): When
copying string options from a parent context, take a copy of the
underlying buffers, rather than simply copying the pointer.
2014-12-19 David Malcolm <dmalcolm@redhat.com>
* jit-recording.c (gcc::jit::recording::context::set_str_option):

View File

@ -181,11 +181,14 @@ recording::context::context (context *parent_ctxt)
{
if (parent_ctxt)
{
/* Inherit options from parent.
Note that the first memcpy means copying pointers to strings. */
memcpy (m_str_options,
parent_ctxt->m_str_options,
sizeof (m_str_options));
/* Inherit options from parent. */
for (unsigned i = 0;
i < sizeof (m_str_options) / sizeof (m_str_options[0]);
i++)
{
const char *parent_opt = parent_ctxt->m_str_options[i];
m_str_options[i] = parent_opt ? xstrdup (parent_opt) : NULL;
}
memcpy (m_int_options,
parent_ctxt->m_int_options,
sizeof (m_int_options));