diff options
author | Alex Denisov <1101.debian@gmail.com> | 2015-02-16 16:17:05 +0000 |
---|---|---|
committer | Alex Denisov <1101.debian@gmail.com> | 2015-02-16 16:17:05 +0000 |
commit | e36748a8eb65b7ee2b82b873d5e80f9c4e4093eb (patch) | |
tree | 17fe01811d7a0e51d541665a2ef06bd40b9c9168 /clang/lib/Sema/SemaExprObjC.cpp | |
parent | 235d1f99aa5c407ee59b9eb8c6ea936354342b59 (diff) | |
download | bcm5719-llvm-e36748a8eb65b7ee2b82b873d5e80f9c4e4093eb.tar.gz bcm5719-llvm-e36748a8eb65b7ee2b82b873d5e80f9c4e4093eb.zip |
Fix crash when clang tries to build NSNumber literal after forward declaration
Bug report: http://llvm.org/bugs/show_bug.cgi?id=22561
Clang tries to create ObjCBoxedExpression of type 'NSNumber'
when 'NSNumber' has only forward declaration, this cause a crash later,
when 'Sema' refers to a nil QualType of the whole expression.
Please, refer to the bug report for the better explanation.
llvm-svn: 229402
Diffstat (limited to 'clang/lib/Sema/SemaExprObjC.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprObjC.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp index 8bdd18ea20e..cb1f21acac8 100644 --- a/clang/lib/Sema/SemaExprObjC.cpp +++ b/clang/lib/Sema/SemaExprObjC.cpp @@ -218,7 +218,9 @@ static ObjCMethodDecl *getNSNumberFactoryMethod(Sema &S, SourceLocation Loc, S.Diag(Loc, diag::err_undeclared_nsnumber); return nullptr; } - + } + + if (S.NSNumberPointer.isNull()) { // generate the pointer to NSNumber type. QualType NSNumberObject = CX.getObjCInterfaceType(S.NSNumberDecl); S.NSNumberPointer = CX.getObjCObjectPointerType(NSNumberObject); |