]> granicus.if.org Git - clang/commitdiff
Fix <rdar://problem/6336774> clang block rewriter: Assertion failed: Offset+NumBytes...
authorSteve Naroff <snaroff@apple.com>
Mon, 3 Nov 2008 11:20:24 +0000 (11:20 +0000)
committerSteve Naroff <snaroff@apple.com>
Mon, 3 Nov 2008 11:20:24 +0000 (11:20 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58607 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/RewriteBlocks.cpp
Driver/RewriteObjC.cpp

index cab4b817811598caa60ed25695f86b0379bd4739..d8e347fafbac17cdcd3cdc455aca043dbe143b89 100644 (file)
@@ -746,6 +746,9 @@ void RewriteBlocks::RewriteCastExpr(CastExpr *CE) {
   SourceLocation LocStart = CE->getLocStart();
   SourceLocation LocEnd = CE->getLocEnd();
   
+  if (!Rewriter::isRewritable(LocStart) || !Rewriter::isRewritable(LocEnd))
+    return;
+    
   const char *startBuf = SM->getCharacterData(LocStart);
   const char *endBuf = SM->getCharacterData(LocEnd);
   
index 39f4f15ae9b1ec79b1bc983800e5b70ef6eee03a..ee9e2bc2492d38c32d6dd98e51fd0f6d4c6abf76 100644 (file)
@@ -3570,6 +3570,9 @@ void RewriteObjC::RewriteCastExpr(CastExpr *CE) {
   // Need to avoid trying to rewrite synthesized casts.
   if (LocStart.isInvalid())
     return;
+  // Need to avoid trying to rewrite casts contained in macros.
+  if (!Rewriter::isRewritable(LocStart) || !Rewriter::isRewritable(LocEnd))
+    return;
     
   const char *startBuf = SM->getCharacterData(LocStart);
   const char *endBuf = SM->getCharacterData(LocEnd);