On Fri, May 8, 2009 at 11:21 PM, Bruno Haible <br...@clisp.org> wrote: > Andreas Schwab wrote: >> They are free to access the object in any random order they like. > > The question is: How many bytes are the mem* functions free to access? > > How many bytes is "the object" large?
If s is NULL, there _is_ no object. > ISO C 99 7.21.5.1 says: > > "The memchr function locates the first occurrence of c (converted to an > unsigned > char) in the initial n characters (each interpreted as unsigned char) of the > object pointed to by s. NULL is not a pointer to an object. A program which passes NULL to memchr() has undefined behaviour. SIGSEGV is the lucky outcome here; the compiler is allowed to pour gasoline in your coffee instead of producing an executable if it likes. See section 3.4.3 of the standard. > > Returns > The memchr function returns a pointer to the located character, or a null > pointer > if the character does not occur in the object." > > Can you give a justification why the function would be allowed to access more > than > n bytes? The question doesn't arise, though. You're talking about the range of reasonable behaviours applying in circumstances where the C standard imposes no requirements at all. James. _______________________________________________ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils