diff --git a/src/operators.c b/src/operators.c
index b5c1a531a0170a1d6dfab37aca89870683678793..169c0f8d28533862d97104f0cdaecc9e8cd75cdc 100644
--- a/src/operators.c
+++ b/src/operators.c
@@ -1734,7 +1734,8 @@ PMOD_EXPORT void f_add(INT32 args)
       while (args > 2) {
 	/* Pop the smallest element from the heap. */
 	FLOAT_ARG_TYPE top = Pike_sp[-args].u.float_number;
-	Pike_sp[-args] = *(--Pike_sp);
+	Pike_sp[-args] = Pike_sp[-1];
+        Pike_sp--;
 	args--;
 	float_heap_sift_down(Pike_sp-args, 0, args);