OSDN Git Service

Properly initialize cpp_context in destringize_and_run
authordodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 May 2012 16:55:19 +0000 (16:55 +0000)
committerdodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 2 May 2012 16:55:19 +0000 (16:55 +0000)
commit6cfa7465658b8383fe8b233b1f37647224aaa505
treeeca8487b03f6e48b0470d9df650fe3ac37959625
parente3a19533c3ba16854e1dc1bb2ac7ce197883e38f
Properly initialize cpp_context in destringize_and_run

destringize_and_run forgets to initialize all the fields of the
cpp_context that it pushes.  Later _cpp_pop_context then gets confused
when it accesses context->tokens_kind via the call to macro_of_context
on context->prev.

The first hunk of this patch is the real obvious fix.  The second hunk
is just an assert that I am adding to err on the safe side.

Tested by on x86_64-unknown-linux-gnu against trunk by running the
test gcc.dg/gomp/macro-4.c under Valgrind, and bootstrapped.

libcpp/

* directives.c (destringize_and_run): Properly initialize the new
context.
* macro.c (_cpp_pop_context): Assert that we shouldn't try to pop
the initial base context, which has the same life time as the
current instance of cpp_file.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@187054 138bc75d-0d04-0410-961f-82ee72b054a4
libcpp/ChangeLog
libcpp/directives.c
libcpp/macro.c