[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: please keep 'memmem' module simple
From: |
Simon Josefsson |
Subject: |
Re: please keep 'memmem' module simple |
Date: |
Wed, 09 Jan 2008 19:24:18 +0100 |
User-agent: |
Gnus/5.110007 (No Gnus v0.7) Emacs/22.1 (gnu/linux) |
Eric Blake <address@hidden> writes:
> Simon Josefsson <simon <at> josefsson.org> writes:
>
>> > return !result || !memmem ("a", 1, 0, 0);]])],
>> >
>> Ah, thanks. This was not part of the old memmem.m4 checks. Still, the
>> glibc documentation (which I regard as the memmem specification) doesn't
>> say what should be returned for empty needles. My conclusion is that
>> empty needles should lead to undefined behaviour.
>
> Fair enough for the memmem-simple module. But since POSIX requires that 0-
> length needles in strstr(ptr,"") return ptr, and I consider that the
> similarity
> between memmem and strstr is essential, (in part so someone could do a naive
> implementation of strstr as:
> return memmem (haystack, strlen (haystack), needle, strlen (needle));
> and in part because if the haystack length is known in advance, memmem can be
> more efficient than strstr). Therefore, the full memmem module should
> enforce
> an empty needle as well-defined behavior. (Or, put another way, I
> want 'echo "index(abc,)"|m4' to work without me having to special case
> whether
> the second argument to index is empty).
I hadn't considered the strstr similarity here. I think that is a
fairly strong argument that empty needles should return pointers too
even for memmem. But until the documentation actually states it, I
think people need to be careful about empty needles anyway.
>> Unfortunately, cross-compilation is in practice the typical scenario
>> where people care about size issues, so I would prefer to rely on
>> AC_CHECK_FUNC instead.
>
> OK then, based on this email, the gl_FUNC_MEMMEM_SIMPLE macro uses
> AC_CHECK_FUNC when cross-compiling, while gl_FUNC_MEMMEM is pessimistic and
> always uses the replacement (unless you did primed the cache with
> gl_cv_func_memmem_works=yes first). Clients of memmem-simple must avoid
> empty
> needles, and should avoid arbitrary needles, and as a result get smaller code
> size on glibc and cygwin.
Right.
> Here's what I'm committing (I reversed your proposed macro dependency - the
> full module should depend on and augment the simple check, not the other way
> around):
Excellent. Thank you very much for discussing and addressing this.
I'll update gnutls and will report back any problems.
Regards,
/Simon
- Re: please keep 'memmem' module simple, (continued)
- Re: please keep 'memmem' module simple, Simon Josefsson, 2008/01/08
- Re: please keep 'memmem' module simple, Bruno Haible, 2008/01/08
- Re: please keep 'memmem' module simple, Simon Josefsson, 2008/01/09
- Re: please keep 'memmem' module simple, Eric Blake, 2008/01/09
- Re: please keep 'memmem' module simple, Simon Josefsson, 2008/01/09
- Re: please keep 'memmem' module simple, Eric Blake, 2008/01/09
- Re: please keep 'memmem' module simple, Simon Josefsson, 2008/01/09
- Re: please keep 'memmem' module simple, Simon Josefsson, 2008/01/09
- Re: please keep 'memmem' module simple, Bruno Haible, 2008/01/09
- Re: please keep 'memmem' module simple, Eric Blake, 2008/01/09
- Re: please keep 'memmem' module simple,
Simon Josefsson <=
- Re: please keep 'memmem' module simple, Bruno Haible, 2008/01/09
- Re: please keep 'memmem' module simple, Eric Blake, 2008/01/09