Hi Cristian, On 12/29/22 20:45, Cristian Rodríguez wrote: > On Thu, Dec 29, 2022 at 4:20 PM Alejandro Colomar via Libc-alpha > wrote: >> >> Hi, >> >> I was reading rawmemchr(3), and found some funny text: >> >> RETURN VALUE >> The memchr() and memrchr() functions return a pointer to the matching >> byte or NULL if the character does not occur in the given memory area. >> >> The rawmemchr() function returns a pointer to the matching byte, if one >> is found. If no matching byte is found, the result is unspecified. >> >> >> Of course, if the byte is not found, the result is not unspecified, but rather >> undefined, and a crash is very likely so maybe there's not even a result. I >> thought this might be a thinko of the manual page, but the glibc manual seems to >> have similar text: >> > > The library itself uses this function mostly to find NULL as an > optimization. This is all before GCC handled all of this so it is > mostly obsolete. > gcc replaces null byte searches that use str*chr with s + strlen(s) > and expands memchr c=null and rawmemchr-like patterns inline. You mean that GCC does the following?: inline size_t strlen(const char *s) { return rawmemchr(s, '\0'); } If so, great, because I am writing a libc replacement, and was implementing strlen(3) exactly like that, which is why I needed the docs. It may be something not very useful, but I guess it's still very useful for libc internals. Cheers, Alex --