diff --git a/src/ExprNode.cc b/src/ExprNode.cc
index 09f409059e08851ac62209fd6f4d3c1cfa5c0601..81ba65f4aff9720153b3817bd7932ea5aa3c7ae4 100644
--- a/src/ExprNode.cc
+++ b/src/ExprNode.cc
@@ -6758,11 +6758,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;
 }