On Sun, Oct 07, 2007 at 04:11:29PM +0000, Johannes Schindelin wrote: > Hi, > > On Sun, 7 Oct 2007, Pierre Habouzit wrote: > > > On Sun, Oct 07, 2007 at 02:24:25PM +0000, Timo Hirvonen wrote: > > > > > strbuf->buf is always non-NULL and NUL-terminated so you could just do > > > > > > static inline int strbuf_cmp(const struct strbuf *a, const struct strbuf *b) > > > { > > > int len = a->len < b->len ? a->len : b->len; > > > return memcmp(a->buf, b->buf, len + 1); > > > } > > > > doesn't work, because a buffer can have (in some very specific cases) > > an embeded NUL. > > But it should work. The function memcmp() could not care less if there is > a NUL or not, it just compares until it finds a difference. not if your one of your strbuf has as prefix, the other followed by '\0', then anything else (including nothing ;p). Your test would yield equality. -- ·O· Pierre Habouzit ··O madcoder@xxxxxxxxxx OOO http://www.madism.org
Attachment:
pgpzQxVb7YB02.pgp
Description: PGP signature