diff options
author | Jakub Jelinek <jakub@redhat.com> | 2017-01-04 21:05:14 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-01-04 21:05:14 +0100 |
commit | 066435fe10c4982780b05844793ddf287ac1d225 (patch) | |
tree | 703db28e3bf3d68d2213426b81d687c7014bf97c /gcc | |
parent | fb85f9d05f09a3e122d702f85b8af306a3999357 (diff) | |
download | gcc-066435fe10c4982780b05844793ddf287ac1d225.zip gcc-066435fe10c4982780b05844793ddf287ac1d225.tar.gz gcc-066435fe10c4982780b05844793ddf287ac1d225.tar.bz2 |
re PR c++/71182 (parser.c cp_lexer_previous_token sanitizer detects member call on null pointer)
PR c++/71182
* parser.c (cp_lexer_previous_token): Use vec_safe_address in the
assertion, as lexer->buffer may be NULL.
* g++.dg/cpp0x/pr71182.C: New test.
From-SVN: r244070
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/parser.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/pr71182.C | 12 |
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 48061a0..1629420 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2017-01-04 Jakub Jelinek <jakub@redhat.com> + + PR c++/71182 + * parser.c (cp_lexer_previous_token): Use vec_safe_address in the + assertion, as lexer->buffer may be NULL. + 2017-01-04 Marek Polacek <polacek@redhat.com> PR c++/77545 diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c index b94270d..b4b8f13 100644 --- a/gcc/cp/parser.c +++ b/gcc/cp/parser.c @@ -766,7 +766,7 @@ cp_lexer_previous_token (cp_lexer *lexer) /* Skip past purged tokens. */ while (tp->purged_p) { - gcc_assert (tp != lexer->buffer->address ()); + gcc_assert (tp != vec_safe_address (lexer->buffer)); tp--; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5a3da3b..53ba248 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2017-01-04 Jakub Jelinek <jakub@redhat.com> + + PR c++/71182 + * g++.dg/cpp0x/pr71182.C: New test. + 2017-01-04 Kelvin Nilsen <kelvin@gcc.gnu.org> PR target/78056 diff --git a/gcc/testsuite/g++.dg/cpp0x/pr71182.C b/gcc/testsuite/g++.dg/cpp0x/pr71182.C new file mode 100644 index 0000000..c5c0c54 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/pr71182.C @@ -0,0 +1,12 @@ +// PR c++/71182 +// { dg-do compile { target c++11 } } + +class A { + template <typename> void As(); +}; +template <typename T> class B : A { + void f() { + A *g ; + g ? g->As<T>() : nullptr; + } +}; |