Index: src/ResolvExpr/AlternativeFinder.cc
===================================================================
--- src/ResolvExpr/AlternativeFinder.cc	(revision 1ed958c38e6aaf12525b373df228b8bdfe25d2fb)
+++ src/ResolvExpr/AlternativeFinder.cc	(revision 6b8643d369295cb3b23fe0021246d48bcdbccefb)
@@ -924,7 +924,7 @@
 
 	template<typename OutputIterator>
-	void AlternativeFinder::Finder::validateFunctionAlternative( const Alternative &func, ArgPack& result,
-			const std::vector<ArgPack>& results, OutputIterator out ) {
-		ApplicationExpr *appExpr = new ApplicationExpr( func.expr->clone() );
+	void AlternativeFinder::Finder::validateFunctionAlternative( const Alternative &func, 
+			ArgPack& result, const std::vector<ArgPack>& results, OutputIterator out ) {
+		ApplicationExpr *appExpr = new ApplicationExpr( func.expr );
 		// sum cost and accumulate actuals
 		std::list<Expression*>& args = appExpr->args;
@@ -932,5 +932,5 @@
 		const ArgPack* pack = &result;
 		while ( pack->expr ) {
-			args.push_front( pack->expr->clone() );
+			args.push_front( pack->expr );
 			cost += pack->cost;
 			pack = &results[pack->parent];
