Fix memchr with a zero length.

The memchr implementation for 64 bit fails if these conditions occur:

- The buffer is 32 byte aligned.
- The buffer contains the character in the first byte.
- The count sent in is zero.

The function should return NULL, but it's not.

Bug: 16676625
Change-Id: Iab33cc7a8b79920350c72f054dff0e0a3cde69ce
This commit is contained in:
Christopher Ferris
2014-07-30 16:06:56 -07:00
parent 4ad5066e1d
commit e03e1eac0b
2 changed files with 13 additions and 0 deletions

View File

@@ -763,6 +763,14 @@ TEST(string, memchr) {
}
}
TEST(string, memchr_zero) {
uint8_t* buffer;
ASSERT_EQ(0, posix_memalign(reinterpret_cast<void**>(&buffer), 64, 64));
memset(buffer, 10, 64);
ASSERT_TRUE(NULL == memchr(buffer, 5, 0));
ASSERT_TRUE(NULL == memchr(buffer, 10, 0));
}
TEST(string, memrchr) {
int seek_char = random() & 255;
StringTestState<char> state(SMALL);