Charles Levert wrote:
I think the only pending patch that's affected
is one you were working on to fix a bug.

Sorry to be so forgetful, but could you post the URL or tracker number of the particular bug that you are talking about?

 I would now propose
[second revision]



--- 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];



along with tests that would be surrounded by a

   for mode in F G E

loop in "tests/foad1.sh".

Please could you write those tests?

 I still have to fully
understand how this delta[] array is used and
may (or not) suggest additional individual tests
later on.

In another email you wrote:
(I still don't understand the second test case,
but I think the fix is correct nevertheless.
Please don't use a MIN() macro with a complex
twice-evaluated argument that the optimizer
might not pick up on, though; see a previous
email for my proposed alternative.)

Please could you be more specific - what test are you looking at, and what/where is that alternative?

- Julian


Reply via email to