On Sun, Jun 21, 2026 at 12:11:33PM +0000, Bradley Morgan wrote:
> memchr_inv() takes a size_t length but counts 8 byte words in an
> unsigned int. At 32GiB that count wraps, so the scan can quietly miss
> most of the range.

Wow! Is it real life use case?

> Use size_t for the word count.

...

> @@ -837,7 +837,8 @@ void *memchr_inv(const void *start, int c, size_t bytes)
>  {
>       u8 value = c;
>       u64 value64;
> -     unsigned int words, prefix;
> +     size_t words;
> +     unsigned int prefix;

Perhaps move towards reversed xmas tree while at it?

        unsigned int prefix;
        size_t words;
        u8 value = c;
        u64 value64;

(same lines touched, no extra).

>       if (bytes <= 16)
>               return check_bytes8(start, value, bytes);

-- 
With Best Regards,
Andy Shevchenko



Reply via email to