diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2013-04-07 14:10:40 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2013-04-07 14:10:40 +0000 |
commit | 5c488ef85c7bb6de228194ce2c4054a1d4696a73 (patch) | |
tree | a563e5153a6f973607039b3bdf2851c76aca1b40 /clang/lib/Sema/SemaDecl.cpp | |
parent | 0e8a52d18fbca4062234310709bedb44abd3ecd2 (diff) | |
download | bcm5719-llvm-5c488ef85c7bb6de228194ce2c4054a1d4696a73.tar.gz bcm5719-llvm-5c488ef85c7bb6de228194ce2c4054a1d4696a73.zip |
Sema: Don't crash when trying to emit a warning for a duplicate value in an invalid enum.
Fixes PR15693. A null check on a pointer returned from cast<> is a very dubious
construct, do we have a checker for this somewhere?
llvm-svn: 178975
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 84d992c8788..c8a5d932e76 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -11538,7 +11538,7 @@ static void CheckForDuplicateEnumValues(Sema &S, Decl **Elements, // Populate the EnumMap with all values represented by enum constants without // an initialier. for (unsigned i = 0; i < NumElements; ++i) { - EnumConstantDecl *ECD = cast<EnumConstantDecl>(Elements[i]); + EnumConstantDecl *ECD = cast_or_null<EnumConstantDecl>(Elements[i]); // Null EnumConstantDecl means a previous diagnostic has been emitted for // this constant. Skip this enum since it may be ill-formed. |