Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision 8d2844a9848e1bfbbfa5658f475772683c91d562)
+++ src/CodeGen/CodeGenerator.cc	(revision 03b812d251e4a970bd478186cbc6540e71a0fda7)
@@ -311,5 +311,5 @@
 							Type * type = InitTweak::getPointerBase( (*arg)->get_results().front() );
 							assert( type );
-							newExpr->get_results().push_back( type );
+							newExpr->get_results().push_back( type->clone() );
 							*arg = newExpr;
 						} // if
Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision 8d2844a9848e1bfbbfa5658f475772683c91d562)
+++ src/InitTweak/FixInit.cc	(revision 03b812d251e4a970bd478186cbc6540e71a0fda7)
@@ -284,5 +284,5 @@
 			UntypedExpr * untyped = new UntypedExpr( new NameExpr( fname ) );
 			untyped->get_args().push_back( new AddressExpr( new VariableExpr( var ) ) );
-			if (cpArg) untyped->get_args().push_back( cpArg );
+			if (cpArg) untyped->get_args().push_back( cpArg->clone() );
 
 			// resolve copy constructor
Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision 8d2844a9848e1bfbbfa5658f475772683c91d562)
+++ src/SynTree/Expression.cc	(revision 03b812d251e4a970bd478186cbc6540e71a0fda7)
@@ -385,5 +385,5 @@
 UntypedExpr::~UntypedExpr() {
 	delete function;
-	// deleteAll( args );  //TODO FIXME the arguments are leaked but they seem to be shared in some way
+	deleteAll( args );
 }
 
