diff --git a/src/backend.cmod b/src/backend.cmod
index 00d6ac77f4e2c2e9ad7e1910af1ee49d9fea2ff9..ef4ba872fea7e7cb54a0c4c9f04e767b6ba57f5e 100644
--- a/src/backend.cmod
+++ b/src/backend.cmod
@@ -1035,6 +1035,7 @@ PIKECLASS Backend
 	     if(CALL(c->pos) != c)
 	       Pike_fatal("Call_out->pos not correct!\n");
 #endif
+	     UNPROTECT_CALL_OUTS();
 	     add_ref(c->args);
 	     return c->args;
 	   }
@@ -1068,7 +1069,7 @@ PIKECLASS Backend
 	 /* FIXME: Use CYCLIC! */
 	 if (is_eq(fun, ITEM(res))) {
 	   add_ref(res);
-	   pop_n_elems(save_sp - Pike_sp);
+	   pop_n_elems(Pike_sp - save_sp);
 	   return res;
 	 }
 	 pop_stack();