This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: my strstr is broken


Adhemerval wrote:
> On 11/09/2018 15:46, Wilco Dijkstra wrote:
>> Siddhesh wrote:
>> 
>>> Is this a non-x86 architecture?  I can reproduce this on the glibc
>>> 2.28 tag when I hack the ifunc resolver to ignore
>>> __strstr_sse2_unaligned and always use the stock __strstr.
>> 
>> It's the generic strstr indeed. The issue is due to the long needle code using
>> the same AVAILABLE macro as for short needles. Since the macro now 
>> ensures the haystack contains up to 512 valid characters, it cannot handle
>> needles which are longer than this. The fix is easy, just add the needle length.
>> I'll post a patch.
>
> Does it affect memmem as well? It would be useful to check it the tests
> are inadequate and fix them if the case for memmem.

Strcasestr uses the same readahead mechanism, but memmem is fine since it
doesn't use null-terminated strings. The issue is due to trying to avoid calling strlen
on the whole string - it's not obvious that's worth the increase in complexity.

Wilco

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]