diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index add5932fbde1e6e58c94c5363d95a2ae9dfaef98..a697f645513e7d0da0702512e8eab8e6c87e332f 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -6433,11 +6433,15 @@ AbstractExternalFunctionNode::prepareForDerivation()
 
   non_null_derivatives = arguments.at(0)->non_null_derivatives;
   for (int i = 1; i < static_cast<int>(arguments.size()); i++)
-    set_union(non_null_derivatives.begin(),
-              non_null_derivatives.end(),
-              arguments.at(i)->non_null_derivatives.begin(),
-              arguments.at(i)->non_null_derivatives.end(),
-              inserter(non_null_derivatives, non_null_derivatives.begin()));
+    {
+      set<int> non_null_derivatives_tmp;
+      set_union(non_null_derivatives.begin(),
+                non_null_derivatives.end(),
+                arguments.at(i)->non_null_derivatives.begin(),
+                arguments.at(i)->non_null_derivatives.end(),
+                inserter(non_null_derivatives_tmp, non_null_derivatives_tmp.begin()));
+      non_null_derivatives = move(non_null_derivatives_tmp);
+    }
 
   preparedForDerivation = true;
 }