aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaExprObjC.cpp
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2010-02-11 22:41:21 +0000
committerTed Kremenek <kremenek@apple.com>2010-02-11 22:41:21 +0000
commiteb3b324800598cc3d5385fbad95ae5cff2c79113 (patch)
tree6ece7c4915017211d08b7947ccde32d44225d7c8 /lib/Sema/SemaExprObjC.cpp
parentbdf73d890598fa0220a3980f8529acdc149c13d6 (diff)
Allocate the SubExprs array in ObjCMessageExpr using the allocator associated with ASTContext. This fixes yet another leak (<rdar://problem/7639260>).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95930 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaExprObjC.cpp')
-rw-r--r--lib/Sema/SemaExprObjC.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/lib/Sema/SemaExprObjC.cpp b/lib/Sema/SemaExprObjC.cpp
index 85956c3e7e..0c5d8efa28 100644
--- a/lib/Sema/SemaExprObjC.cpp
+++ b/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);
}