diff options
author | Thomas Rast <trast@inf.ethz.ch> | 2013-04-16 11:57:45 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-04-16 11:17:48 -0700 |
commit | 70d26c6e76d91c04ec53001a21f405b9883e3e3f (patch) | |
tree | 5e125bd4e64bc924c39fe0b70ef69cb336f7d784 | |
parent | 7e2010537e96d0a1144520222f20ba1dc3d61441 (diff) | |
download | git-70d26c6e76d91c04ec53001a21f405b9883e3e3f.tar.gz |
read_revisions_from_stdin: make copies for handle_revision_arg
read_revisions_from_stdin() has passed pointers to its read buffer
down to handle_revision_arg() since its inception way back in 42cabc3
(Teach rev-list an option to read revs from the standard input.,
2006-09-05). Even back then, this was a bug: through
add_pending_object, the argument was recorded in the object_array's
'name' field.
Fix it by making a copy whenever read_revisions_from_stdin() passes an
argument down the callchain. The other caller runs handle_revision_arg()
on argv[], where it would be redundant to make a copy.
Signed-off-by: Thomas Rast <trast@inf.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | revision.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/revision.c b/revision.c index ae12e11fb7..a50df66c50 100644 --- a/revision.c +++ b/revision.c @@ -1275,7 +1275,8 @@ static void read_revisions_from_stdin(struct rev_info *revs, } die("options not supported in --stdin mode"); } - if (handle_revision_arg(sb.buf, revs, 0, REVARG_CANNOT_BE_FILENAME)) + if (handle_revision_arg(xstrdup(sb.buf), revs, 0, + REVARG_CANNOT_BE_FILENAME)) die("bad revision '%s'", sb.buf); } if (seen_dashdash) |