]> granicus.if.org Git - clang/commit
[Sema] Don't crash when recovering from a misspelled pseudo destructor call to an...
authorBruno Ricci <riccibrun@gmail.com>
Thu, 24 Jan 2019 13:52:47 +0000 (13:52 +0000)
committerBruno Ricci <riccibrun@gmail.com>
Thu, 24 Jan 2019 13:52:47 +0000 (13:52 +0000)
commit76252b07cbbbaff6e4c84033a940f08b35f55cd5
treeb0d157aba68ca7d41e304f34edfc1871209eca06
parenta7ee181aaa8a79b1fece474c733c4f571f0d4ef2
[Sema] Don't crash when recovering from a misspelled pseudo destructor call to an incomplete type.

When attempting to correct a misspelled pseudo destructor call as in:

struct Foo;
void foo(Foo *p) {
  p.~Foo();
}

a call is made in canRecoverDotPseudoDestructorCallsOnPointerObjects
to LookupDestructor without checking that the record has a definition.

This causes an assertion later in LookupSpecialMember which assumes that
the record has a definition.

Patch By Roman Zhikharevich!

Differential Revision: https://reviews.llvm.org/D57111

Reviewed By: riccibruno

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@352047 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaExprCXX.cpp
test/SemaCXX/incomplete-call.cpp