]> granicus.if.org Git - clang/commitdiff
Use a dyn_cast to avoid a crash when the TypeLoc is not a ConstantArrayTypeLoc.
authorChad Rosier <mcrosier@apple.com>
Wed, 6 Feb 2013 00:58:34 +0000 (00:58 +0000)
committerChad Rosier <mcrosier@apple.com>
Wed, 6 Feb 2013 00:58:34 +0000 (00:58 +0000)
rdar://13153516

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@174477 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaChecking.cpp

index 8db183105e523cab63407e80289d2f1b1b33ba2c..800f64cd5cdce71ff71b22a5b8a2060a248935c0 100644 (file)
@@ -5777,10 +5777,11 @@ static bool IsTailPaddedMemberArray(Sema &S, llvm::APInt Size,
       TInfo = TDL->getTypeSourceInfo();
       continue;
     }
-    ConstantArrayTypeLoc CTL = cast<ConstantArrayTypeLoc>(TL);
-    const Expr *SizeExpr = dyn_cast<IntegerLiteral>(CTL.getSizeExpr());
-    if (!SizeExpr || SizeExpr->getExprLoc().isMacroID())
-      return false;
+    if (const ConstantArrayTypeLoc *CTL = dyn_cast<ConstantArrayTypeLoc>(&TL)) {
+      const Expr *SizeExpr = dyn_cast<IntegerLiteral>(CTL->getSizeExpr());
+      if (!SizeExpr || SizeExpr->getExprLoc().isMacroID())
+        return false;
+    }
     break;
   }