* On Monday 2005-07-04 at 00:05:59 -0700, Paul Eggert wrote: > Charles Levert <[EMAIL PROTECTED]> writes: > > > + unsigned u = kwset->mind - (i + 1); > > A minor point: the usual GNU style is to say "unsigned int" rather > than plain "unsigned". > > Another point, still minor (though less minor): Why not just use > "int"? That will work here; no overflow is possible, since both > values are nonnegative. In general it's better to stick with the data > types that the rest of the code is using, and in this case it's int.
--- src/kwset.c 2005-07-04 01:14:37 -0400 +++ src/kwset.c 2005-07-04 04:50:38 -0400 @@ -404,7 +404,13 @@ kwsprep (kwset_t kws) } /* Build the Boyer Moore delta. Boy that's easy compared to CW. */ for (i = 0; i < kwset->mind; ++i) - delta[U(kwset->target[i])] = kwset->mind - (i + 1); + { + int d = kwset->mind - (i + 1); + + if (UCHAR_MAX < d) + d = UCHAR_MAX; + delta[U(kwset->target[i])] = d; + } /* Find the minimal delta2 shift that we might make after a backwards match has failed. */ c = kwset->target[kwset->mind - 1];