diff --git a/src/gc.c b/src/gc.c
index 34b22df3d55f19ddb5b3e3276eb5069c31f46efb..d4e86ada7a6033a4a47a884f92ad3f30d3ba6d47 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -89,14 +89,14 @@ static struct marker *new_marker(void)
 }
 
 static struct marker **hash=0;
-static int hashsize=0;
+static unsigned long hashsize=0;
 
 static struct marker *getmark(void *a)
 {
   int hashval;
   struct marker *m;
 
-  hashval=((long)a)%hashsize;
+  hashval=((unsigned long)a)%hashsize;
 
   for(m=hash[hashval];m;m=m->next)
     if(m->marked == a)