strbuf change: be sure ->buf is never ever NULL.
authorPierre Habouzit <madcoder@debian.org>
Thu, 27 Sep 2007 10:58:23 +0000 (12:58 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sat, 29 Sep 2007 09:13:33 +0000 (02:13 -0700)
commitb315c5c08139c0d3c1e4867a305334e29da01d07
treefd4b122c7dd87e06a642a191b678b426d35e5a5b
parent690b61f5f13db05aa4ad0efc422bd01aef3c1367
strbuf change: be sure ->buf is never ever NULL.

For that purpose, the ->buf is always initialized with a char * buf living
in the strbuf module. It is made a char * so that we can sloppily accept
things that perform: sb->buf[0] = '\0', and because you can't pass "" as an
initializer for ->buf without making gcc unhappy for very good reasons.

strbuf_init/_detach/_grow have been fixed to trust ->alloc and not ->buf
anymore.

as a consequence strbuf_detach is _mandatory_ to detach a buffer, copying
->buf isn't an option anymore, if ->buf is going to escape from the scope,
and eventually be free'd.

API changes:
  * strbuf_setlen now always works, so just make strbuf_reset a convenience
    macro.
  * strbuf_detatch takes a size_t* optional argument (meaning it can be
    NULL) to copy the buffer's len, as it was needed for this refactor to
    make the code more readable, and working like the callers.

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
13 files changed:
builtin-apply.c
builtin-archive.c
builtin-fetch--tool.c
commit.c
convert.c
diff.c
entry.c
fast-import.c
imap-send.c
quote.c
sha1_file.c
strbuf.c
strbuf.h