From f9281be2522e3dd1ea4896c6d43de768d7707026 Mon Sep 17 00:00:00 2001 From: ceriel Date: Wed, 11 Nov 1987 15:05:41 +0000 Subject: [PATCH] fixed an obscure bug in the hash function: sometimes the globstep variable had a value equal to size! Also, sizes of tables must be prime --- util/ass/asprint.p | 1 + util/ass/ass30.c | 3 +++ util/ass/ass70.c | 2 +- util/ass/assda.c | 2 +- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/util/ass/asprint.p b/util/ass/asprint.p index 9f9c409f1..f71e02b30 100644 --- a/util/ass/asprint.p +++ b/util/ass/asprint.p @@ -80,6 +80,7 @@ procedure getit; { start the ball rolling } var cset:set of char; f:ifset; insno:byte; + iclass: insclass; nops:integer; opcode:byte; i,j,n:integer; diff --git a/util/ass/ass30.c b/util/ass/ass30.c index 10c52d01b..253580218 100644 --- a/util/ass/ass30.c +++ b/util/ass/ass30.c @@ -211,10 +211,13 @@ int i_flag,flag,number ; cons_t val ; { if ( val<0 ) val = -1-val ; return val>=0 && val=0 && val<=maxadr && val <= 65535L; } + */ return val>= -32768 && val<=32767 ; case OP32 : return TRUE ; diff --git a/util/ass/ass70.c b/util/ass/ass70.c index 7181418d8..4a6547bb8 100644 --- a/util/ass/ass70.c +++ b/util/ass/ass70.c @@ -35,7 +35,7 @@ static int glohash(aname,size) char *aname; { for(sum=i=0,p=aname;*p;i += 3) sum += (*p++)<<(i&07); sum &= 077777; - globstep = (sum / size) + 7; + globstep = (sum / size) % (size - 7) + 7; return(sum % size); } diff --git a/util/ass/assda.c b/util/ass/assda.c index 56ef5ce72..0712aec9c 100644 --- a/util/ass/assda.c +++ b/util/ass/assda.c @@ -132,6 +132,6 @@ size_t sizes[NDEFAULT] = { { 151, 29, 31, 73, 130 }, { 307, 127, 151, 401, 460 }, { 601, 251, 151, 401, 600 }, - {2000, 2000, 2000, 2000, 2000 } + {1601, 1601, 1601, 1601, 2000 } }; size_t *oursize = &sizes[1] ; /* point to selected sizes */ -- 2.34.1