- /* Operating with void * is awkward. */
- const char *haystack = (const char *) haystack_start;
- const char *needle = (const char *) needle_start;
- const char *last_haystack = haystack + haystack_len;
- const char *last_needle = needle + needle_len;
+ /* Abstract memory is considered to be an array of 'unsigned char' values,
+ not an array of 'char' values. See ISO C 99 section 6.2.6.1. */
+ const unsigned char *haystack = (const unsigned char *) haystack_start;
+ const unsigned char *needle = (const unsigned char *) needle_start;
+ const unsigned char *last_haystack = haystack + haystack_len;
+ const unsigned char *last_needle = needle + needle_len;