From: Thomas Rast Date: Tue, 16 Apr 2013 09:57:45 GMT Subject: [PATCH] read_revisions_from_stdin: make copies for handle_revision_arg Message-ID: In-Reply-To: <516C4FB6.8060703@gmail.com> 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 --- > So I changed my mind. Your "easy fix" looks to me the right thing > to do. So here's the same with a commit message and signoff. I hope I got my history right; I didn't look too long if it had any users, but it was definitely recorded. revision.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/revision.c b/revision.c index 3a20c96..181a8db 100644 --- a/revision.c +++ b/revision.c @@ -1277,7 +1277,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) -- 1.8.2.1.703.g2535f49