Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision 837a17cb4cfddd580cbd349ad08f39a07c799c96)
+++ src/CodeGen/CodeGenerator.cc	(revision dadc1b5f06cc67e49418f26b9adb6ce3fa51ab34)
@@ -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 837a17cb4cfddd580cbd349ad08f39a07c799c96)
+++ src/InitTweak/FixInit.cc	(revision dadc1b5f06cc67e49418f26b9adb6ce3fa51ab34)
@@ -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 837a17cb4cfddd580cbd349ad08f39a07c799c96)
+++ src/SynTree/Expression.cc	(revision dadc1b5f06cc67e49418f26b9adb6ce3fa51ab34)
@@ -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 );
 }
 
