diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 4b04b4ddea5bd06de3788377aeeee8d0fbb491e4..75a802f986a139211758bcd1f37b5ecd5a003def 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -254,13 +254,14 @@ int main(int argc, char *argv[]) {
         std::fill(eta.begin(), eta.end(),
                   parset.get<double>("boundary.friction.eta"));
 
-        myGlobalNonlinearity =
-            globalNonlinearityPtr(new Dune::GlobalRuinaNonlinearity<dim>(
-                nodalIntegrals, a, mu, eta, normalStress));
+        auto const tmp = new Dune::GlobalRuinaNonlinearity<dim>(
+            nodalIntegrals, a, mu, eta, normalStress);
+        myGlobalNonlinearity = globalNonlinearityPtr(tmp);
       } else if (friction_model == std::string("Laursen")) {
-        myGlobalNonlinearity = globalNonlinearityPtr(
+        auto const tmp =
             new Dune::GlobalLaursenNonlinearity<dim, Dune::LinearFunction>(
-                mu, normalStress, nodalIntegrals));
+                mu, normalStress, nodalIntegrals);
+        myGlobalNonlinearity = globalNonlinearityPtr(tmp);
       } else {
         assert(false);
       }