diff --git a/src/svalue.c b/src/svalue.c
index d2a0f327c9097f12c9079e6c5b8c730ebb365d8e..0cb0b68230e07f99292db7f28fcd7c41681c9211 100644
--- a/src/svalue.c
+++ b/src/svalue.c
@@ -471,7 +471,9 @@ PMOD_EXPORT unsigned INT32 hash_svalue(const struct svalue *s)
 	}
 	pop_stack();
 	STACK_LEVEL_DONE(0);
-	break;
+	/* do not mix the return value of __hash, since this makes using
+	 * hash_value pointless */
+	return q;
       }
     }
     /* FALL THROUGH */