summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2009-06-09 07:29:36 (GMT)
committerJunio C Hamano <gitster@pobox.com>2009-06-09 07:29:36 (GMT)
commitf4f78e668dd40f2d4a5bc119cccb3c34c2675c38 (patch)
tree087d0d3e360643fcc12cef76bdbbb1c60686803c
parent8513c54b2a4a821336d10fae6e02db70f0876abc (diff)
parent802f9c9cb21321d3ffe7576e01bbe31c51bd4c70 (diff)
downloadgit-f4f78e668dd40f2d4a5bc119cccb3c34c2675c38.zip
git-f4f78e668dd40f2d4a5bc119cccb3c34c2675c38.tar.gz
git-f4f78e668dd40f2d4a5bc119cccb3c34c2675c38.tar.bz2
Merge branch 'maint'
* maint: diff.c: plug a memory leak in an error path fetch-pack: close output channel after sideband demultiplexer terminates builtin-remote: Make "remote show" display all urls
-rw-r--r--builtin-fetch-pack.c4
-rw-r--r--builtin-remote.c9
-rw-r--r--diff.c1
3 files changed, 10 insertions, 4 deletions
diff --git a/builtin-fetch-pack.c b/builtin-fetch-pack.c
index 6202462..629735f 100644
--- a/builtin-fetch-pack.c
+++ b/builtin-fetch-pack.c
@@ -483,7 +483,9 @@ static int sideband_demux(int fd, void *data)
{
int *xd = data;
- return recv_sideband("fetch-pack", xd[0], fd);
+ int ret = recv_sideband("fetch-pack", xd[0], fd);
+ close(fd);
+ return ret;
}
static int get_pack(int xd[2], char **pack_lockfile)
diff --git a/builtin-remote.c b/builtin-remote.c
index f7d6618..d7ab6b2 100644
--- a/builtin-remote.c
+++ b/builtin-remote.c
@@ -1005,9 +1005,12 @@ static int show(int argc, const char **argv)
get_remote_ref_states(*argv, &states, query_flag);
- printf("* remote %s\n URL: %s\n", *argv,
- states.remote->url_nr > 0 ?
- states.remote->url[0] : "(no URL)");
+ printf("* remote %s\n", *argv);
+ if (states.remote->url_nr) {
+ for (i=0; i < states.remote->url_nr; i++)
+ printf(" URL: %s\n", states.remote->url[i]);
+ } else
+ printf(" URL: %s\n", "(no URL)");
if (no_query)
printf(" HEAD branch: (not queried)\n");
else if (!states.heads.nr)
diff --git a/diff.c b/diff.c
index 4d0a5b9..43835d7 100644
--- a/diff.c
+++ b/diff.c
@@ -3596,6 +3596,7 @@ static char *run_textconv(const char *pgm, struct diff_filespec *spec,
if (start_command(&child) != 0 ||
strbuf_read(&buf, child.out, 0) < 0 ||
finish_command(&child) != 0) {
+ strbuf_release(&buf);
remove_tempfile();
error("error running textconv command '%s'", pgm);
return NULL;