diff options
author | Junio C Hamano <junkio@cox.net> | 2005-04-18 15:07:24 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-18 15:07:24 -0700 |
commit | c157d376740f224789f464785718f3757ea8aa92 (patch) | |
tree | 59c1a227ca811eb95a38b69288bfc54fb87fd078 | |
parent | 00829b5def72f36269796727c9589316a214dc85 (diff) | |
download | git-c157d376740f224789f464785718f3757ea8aa92.tar.gz |
[PATCH] show-diff.c: clean up private buffer use.
This patch fixes sq_expand() and show_differences() not to use and
hold onto its privately allocated buffer, which was a misguided
attempt to reduce calls to malloc but made later changes harder.
Signed-off-by: Junio C Hamano <junkio@cox.net>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | show-diff.c | 22 |
1 files changed, 6 insertions, 16 deletions
diff --git a/show-diff.c b/show-diff.c index 36afb3cc91..2bd789c261 100644 --- a/show-diff.c +++ b/show-diff.c @@ -23,7 +23,6 @@ static char *diff_cmd = "diff -L '%s' -u -N - '%s'"; static char *sq_expand(char *src) { static char *buf = NULL; - static int buf_size = -1; int cnt, c; char *cp; @@ -32,12 +31,8 @@ static char *sq_expand(char *src) if (*cp == '\'') cnt += 3; - if (buf_size < cnt) { - free(buf); - buf_size = cnt; - buf = malloc(cnt); - } - + if (! (buf = malloc(cnt))) + return buf; cp = buf; while ((c = *src++)) { if (c != '\'') @@ -55,22 +50,17 @@ static void show_differences(char *name, void *old_contents, unsigned long long old_size) { FILE *f; - static char *cmd = NULL; - static int cmd_size = -1; - char *name_sq = sq_expand(name); - int cmd_required_length = strlen(name_sq) * 2 + strlen(diff_cmd); + int cmd_size = strlen(name_sq) * 2 + strlen(diff_cmd); + char *cmd = malloc(cmd_size); - if (cmd_size < cmd_required_length) { - free(cmd); - cmd_size = cmd_required_length; - cmd = malloc(cmd_required_length); - } snprintf(cmd, cmd_size, diff_cmd, name_sq, name_sq); f = popen(cmd, "w"); if (old_size) fwrite(old_contents, old_size, 1, f); pclose(f); + free(name_sq); + free(cmd); } static void show_diff_empty(struct cache_entry *ce) |