On Thu, 4 Jun 2015, Richard Earnshaw wrote: > > Change that into > > > > int foo(char *s) > > { > > int l = strlen (s); > > char *p = memchr (s, 'a', l); > > return p+l; > > } > > > > Which is still meaningless if 'a' does not appear in s => when the > result is NULL + l. > > In fact, unless 'a' is the first character the result is possibly > meaningless anyway, since you can't know that p+l doesn't point more > than one beyond the end of the object. > > Perhaps you just meant to return 'p'?
And if size_t is wider than int, this function truncates the length of the string, so still isn't particularly sensible even if returning p. -- Joseph S. Myers jos...@codesourcery.com