diff options
-rw-r--r-- | lib/Rewrite/RewriteModernObjC.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/Rewrite/RewriteModernObjC.cpp b/lib/Rewrite/RewriteModernObjC.cpp index ab5a476510..d59fb43008 100644 --- a/lib/Rewrite/RewriteModernObjC.cpp +++ b/lib/Rewrite/RewriteModernObjC.cpp @@ -1716,16 +1716,14 @@ Stmt *RewriteModernObjC::RewriteObjCSynchronizedStmt(ObjCAtSynchronizedStmt *S) buf += "try "; ReplaceText(rparenLoc, 1, buf); - SourceLocation startLBraceLoc = S->getSynchBody()->getLocEnd(); - const char *startLBraceBuf = SM->getCharacterData(startLBraceLoc); - - assert((*startLBraceBuf == '}') && "bogus @synchronized block"); - - SourceLocation lastCurlyLoc = startLBraceLoc; + SourceLocation startRBraceLoc = S->getSynchBody()->getLocEnd(); + const char *startRBraceBuf = SM->getCharacterData(startRBraceLoc); + assert((*startRBraceBuf == '}') && "bogus @synchronized block"); buf = "} catch (id e) {_rethrow = e;}\n"; Write_RethrowObject(buf); + // produce objc_sync_exit(expr); std::string syncBuf; syncBuf += "\n\tobjc_sync_exit("; @@ -1748,7 +1746,7 @@ Stmt *RewriteModernObjC::RewriteObjCSynchronizedStmt(ObjCAtSynchronizedStmt *S) buf += "}\n"; buf += "}\n"; - ReplaceText(lastCurlyLoc, 1, buf); + ReplaceText(startRBraceLoc, 1, buf); return 0; } |