diff --git a/src/svalue.c b/src/svalue.c
index 7fb2807df96e73bb9cdd867b28a341e3e066e646..05f6101b2ef89931b27dd64c5a8dbf07753ee814 100644
--- a/src/svalue.c
+++ b/src/svalue.c
@@ -200,7 +200,7 @@ void free_svalues(struct svalue *s,INT32 num, INT32 type_hint)
   COMBINE(BIT_STRING, BIT_ARRAY, BIT_MAPPING, BIT_MULTISET, BIT_OBJECT, BIT_PROGRAM, BIT_FUNCTION);
     while(--num>=0)
     {
-      if(s->u.refs[0]--<=0)
+      if(--s->u.refs[0]<=0)
 	really_free_svalue(s);
       s++;
     }
@@ -209,7 +209,7 @@ void free_svalues(struct svalue *s,INT32 num, INT32 type_hint)
   case BIT_FUNCTION:
     while(--num>=0)
     {
-      if(s->u.refs[0]-- <= 0)
+      if(--s->u.refs[0] <= 0)
       {
 	if(s->subtype == FUNCTION_BUILTIN)
 	  really_free_callable(s->u.efun);