| author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | |
| Wed, 15 Dec 2010 15:02:42 +0000 (22:02 +0700) | ||
| committer | Junio C Hamano <gitster@pobox.com> | |
| Thu, 3 Feb 2011 22:08:16 +0000 (14:08 -0800) | ||
| commit | 48932677d62e426b3f26ac236384cb5195fb9dfd | |
| tree | d58115641e35cc305af9b5f48e6fcf39f5cfee35 | tree | snapshot |
| parent | 3bd2bcfa982c69c0f5722c3dfe72b15cd0469d15 | commit | diff |
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>
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 | diff | blob | history | |
| tree-walk.c | diff | blob | history | |
| tree-walk.h | diff | blob | history |