Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision a28bc028a8ac17aa6424a10e57bb2666529c0306)
+++ src/InitTweak/FixInit.cc	(revision 9738e7493d466c869b904ac3763f246b1228bbb4)
@@ -668,10 +668,10 @@
 			stmtsToAdd.splice( stmtsToAdd.end(), fixer.stmtsToAdd );
 			unqMap[unqExpr->get_id()] = unqExpr;
-			if ( unqCount[ unqExpr->get_id() ] == 0 ) {  // insert destructor after the last use of the unique expression
-				stmtsToAdd.splice( stmtsToAddAfter.end(), dtors[ unqExpr->get_id() ] );
-			} else { // remember dtors for last instance of unique expr
-				dtors[ unqExpr->get_id() ] = fixer.stmtsToAddAfter;
-			}
 			if ( UntypedExpr * deref = dynamic_cast< UntypedExpr * >( unqExpr->get_expr() ) ) {
+				if ( unqCount[ unqExpr->get_id() ] == 0 ) {  // insert destructor after the last use of the unique expression
+					stmtsToAdd.splice( stmtsToAddAfter.end(), dtors[ unqExpr->get_id() ] );
+				} else { // remember dtors for last instance of unique expr
+					dtors[ unqExpr->get_id() ] = fixer.stmtsToAddAfter;
+				}
 				// unique expression is now a dereference, because the inner expression is an lvalue returning function call.
 				// Normalize the expression by dereferencing the unique expression, rather than the inner expression
