summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 935e714)
raw | patch | inline | side by side (parent: 935e714)
author | Linus Torvalds <torvalds@osdl.org> | |
Thu, 4 May 2006 00:21:08 +0000 (17:21 -0700) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Thu, 4 May 2006 05:06:45 +0000 (22:06 -0700) |
Somebody on the #git channel complained that the sha1_to_hex() thing uses
a static buffer which caused an error message to show the same hex output
twice instead of showing two different ones.
That's pretty easily rectified by making it uses a simple LRU of a few
buffers, which also allows some other users (that were aware of the buffer
re-use) to be written in a more straightforward manner.
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
a static buffer which caused an error message to show the same hex output
twice instead of showing two different ones.
That's pretty easily rectified by making it uses a simple LRU of a few
buffers, which also allows some other users (that were aware of the buffer
re-use) to be written in a more straightforward manner.
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
diff.c | patch | blob | history | |
merge-tree.c | patch | blob | history | |
sha1_file.c | patch | blob | history |
index 6762fcee5af881b93b97da2dff190137768c1a8e..c845c871130a8943c3c5f5d46cfd52426180fc8b 100644 (file)
--- a/diff.c
+++ b/diff.c
}
if (memcmp(one->sha1, two->sha1, 20)) {
- char one_sha1[41];
int abbrev = o->full_index ? 40 : DEFAULT_ABBREV;
- memcpy(one_sha1, sha1_to_hex(one->sha1), 41);
len += snprintf(msg + len, sizeof(msg) - len,
"index %.*s..%.*s",
- abbrev, one_sha1, abbrev,
- sha1_to_hex(two->sha1));
+ abbrev, sha1_to_hex(one->sha1),
+ abbrev, sha1_to_hex(two->sha1));
if (one->mode == two->mode)
len += snprintf(msg + len, sizeof(msg) - len,
" %06o", one->mode);
diff --git a/merge-tree.c b/merge-tree.c
index 50528d5e438c62be409a9f7d252cedadfd52b15e..cc7b5bd891a213adcc18a44fb9d9ff6d7946cbb3 100644 (file)
--- a/merge-tree.c
+++ b/merge-tree.c
static void resolve(const char *base, struct name_entry *branch1, struct name_entry *result)
{
- char branch1_sha1[50];
-
/* If it's already branch1, don't bother showing it */
if (!branch1)
return;
- memcpy(branch1_sha1, sha1_to_hex_zero(branch1->sha1), 41);
printf("0 %06o->%06o %s->%s %s%s\n",
branch1->mode, result->mode,
- branch1_sha1, sha1_to_hex_zero(result->sha1),
+ sha1_to_hex_zero(branch1->sha1),
+ sha1_to_hex_zero(result->sha1),
base, result->path);
}
diff --git a/sha1_file.c b/sha1_file.c
index f2d33afb27f6c73ad6c177098fe2f2674add7fbe..54648282592d85cea0b1d42e02f358c240991ce2 100644 (file)
--- a/sha1_file.c
+++ b/sha1_file.c
char * sha1_to_hex(const unsigned char *sha1)
{
- static char buffer[50];
+ static int bufno;
+ static char hexbuffer[4][50];
static const char hex[] = "0123456789abcdef";
- char *buf = buffer;
+ char *buffer = hexbuffer[3 & ++bufno], *buf = buffer;
int i;
for (i = 0; i < 20; i++) {