Code

diff-tree: convert base+baselen to writable strbuf
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Wed, 15 Dec 2010 15:02:42 +0000 (22:02 +0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 16 Dec 2010 21:20:22 +0000 (13:20 -0800)
commit8bbcebfd938fbd1c95dc4dd23bc9d754313f43d9
tree0e8dfb8d4ae02bda6cd344b5c0f82511dbaeaa1c
parent186d6043c05ddc796a97fa9c139c91c91de31074
diff-tree: convert base+baselen to writable strbuf

In traversing trees, a full path is splitted into two parts: base
directory and entry. They are however quite often concatenated
whenever a full path is needed. Current code allocates a new buffer,
do two memcpy(), use it, then release.

Instead this patch turns "base" to a writable, extendable buffer. When
a concatenation is needed, the callee only needs to append "entry" to
base, use it, then truncate the entry out again. "base" must remain
unchanged before and after entering a function.

This avoids quite a bit of malloc() and memcpy().

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
tree-diff.c
tree-walk.c
tree-walk.h