2010-07-31 Bruno Haible <bruno@clisp.org>
+ unistr/u8-strchr: Fix several bugs.
+ * lib/unistr/u8-strchr.c (u8_strchr): Don't search beyond the end of
+ the string. When not found, return NULL, not a pointer near the end.
+
More tests for unistr/u8-strchr.
* tests/unistr/test-strchr.h (test_strchr): Renamed from main. Check
that the function does not read past the first occurrence of the byte
switch (u8_uctomb_aux (c, uc, 6))
{
case 2:
- if (*s == 0)
+ if (*s == 0 || s[1] == 0)
break;
{
uint8_t c0 = c[0];
if (s[1] == 0)
break;
}
- return (uint8_t *) s;
}
+ break;
case 3:
- if (*s == 0 || s[1] == 0)
+ if (*s == 0 || s[1] == 0 || s[2] == 0)
break;
{
uint8_t c0 = c[0];
}
case 4:
- if (*s == 0 || s[1] == 0 || s[2] == 0)
+ if (*s == 0 || s[1] == 0 || s[2] == 0 || s[3] == 0)
break;
{
uint8_t c0 = c[0];