diff options
| author | Ted Kremenek <kremenek@apple.com> | 2010-02-11 22:41:21 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2010-02-11 22:41:21 +0000 |
| commit | 2c809308ca66533e05dbbf66caa0e3fd1c7bde39 (patch) | |
| tree | 9b09872eaaa570d7028c27d18349a6892d678886 /clang/lib/Sema/SemaExprObjC.cpp | |
| parent | 524138176df588fdd466e66986df08d4d32918bd (diff) | |
| download | bcm5719-llvm-2c809308ca66533e05dbbf66caa0e3fd1c7bde39.tar.gz bcm5719-llvm-2c809308ca66533e05dbbf66caa0e3fd1c7bde39.zip | |
Allocate the SubExprs array in ObjCMessageExpr using the allocator associated with ASTContext. This fixes yet another leak (<rdar://problem/7639260>).
llvm-svn: 95930
Diffstat (limited to 'clang/lib/Sema/SemaExprObjC.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaExprObjC.cpp | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp index 85956c3e7e0..0c5d8efa288 100644 --- a/clang/lib/Sema/SemaExprObjC.cpp +++ b/clang/lib/Sema/SemaExprObjC.cpp @@ -470,11 +470,13 @@ Sema::ExprResult Sema::ActOnClassMessage( // now, we simply pass the "super" identifier through (which isn't consistent // with instance methods. if (isSuper) - return new (Context) ObjCMessageExpr(receiverName, Sel, returnType, Method, - lbrac, rbrac, ArgExprs, NumArgs); + return new (Context) ObjCMessageExpr(Context, receiverName, Sel, returnType, + Method, lbrac, rbrac, ArgExprs, + NumArgs); else - return new (Context) ObjCMessageExpr(ClassDecl, Sel, returnType, Method, - lbrac, rbrac, ArgExprs, NumArgs); + return new (Context) ObjCMessageExpr(Context, ClassDecl, Sel, returnType, + Method, lbrac, rbrac, ArgExprs, + NumArgs); } // ActOnInstanceMessage - used for both unary and keyword messages. @@ -521,8 +523,9 @@ Sema::ExprResult Sema::ActOnInstanceMessage(ExprTy *receiver, Selector Sel, return true; returnType = returnType.getNonReferenceType(); - return new (Context) ObjCMessageExpr(RExpr, Sel, returnType, Method, lbrac, - rbrac, ArgExprs, NumArgs); + return new (Context) ObjCMessageExpr(Context, RExpr, Sel, returnType, + Method, lbrac, rbrac, + ArgExprs, NumArgs); } // Handle messages to id. @@ -536,8 +539,9 @@ Sema::ExprResult Sema::ActOnInstanceMessage(ExprTy *receiver, Selector Sel, lbrac, rbrac, returnType)) return true; returnType = returnType.getNonReferenceType(); - return new (Context) ObjCMessageExpr(RExpr, Sel, returnType, Method, lbrac, - rbrac, ArgExprs, NumArgs); + return new (Context) ObjCMessageExpr(Context, RExpr, Sel, returnType, + Method, lbrac, rbrac, + ArgExprs, NumArgs); } // Handle messages to Class. @@ -582,8 +586,9 @@ Sema::ExprResult Sema::ActOnInstanceMessage(ExprTy *receiver, Selector Sel, lbrac, rbrac, returnType)) return true; returnType = returnType.getNonReferenceType(); - return new (Context) ObjCMessageExpr(RExpr, Sel, returnType, Method, lbrac, - rbrac, ArgExprs, NumArgs); + return new (Context) ObjCMessageExpr(Context, RExpr, Sel, returnType, + Method, lbrac, rbrac, + ArgExprs, NumArgs); } ObjCMethodDecl *Method = 0; @@ -665,7 +670,7 @@ Sema::ExprResult Sema::ActOnInstanceMessage(ExprTy *receiver, Selector Sel, lbrac, rbrac, returnType)) return true; returnType = returnType.getNonReferenceType(); - return new (Context) ObjCMessageExpr(RExpr, Sel, returnType, Method, lbrac, - rbrac, ArgExprs, NumArgs); + return new (Context) ObjCMessageExpr(Context, RExpr, Sel, returnType, Method, + lbrac, rbrac, ArgExprs, NumArgs); } |

