git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] diff --no-index: reset temporary buffer lengths on directory iteration
@ 2012-05-16  4:14 Bobby Powers
  2012-05-16  6:33 ` René Scharfe
  0 siblings, 1 reply; 4+ messages in thread
From: Bobby Powers @ 2012-05-16  4:14 UTC (permalink / raw)
  To: git; +Cc: Bobby Powers

Commit 875b91b3 introduced a regression when using diff --no-index
with directories.  When iterating through a directory, the switch to
strbuf from heap-allocated char arrays caused paths to form like
'dir/file1', 'dir/file1file2', rather than 'dir/file1', 'dir/file2' as
expected.  By resetting the length on each iteration (but not
buf.alloc), we avoid this.

Signed-off-by: Bobby Powers <bobbypowers@gmail.com>
---
 diff-no-index.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/diff-no-index.c b/diff-no-index.c
index b44473e..bec3ea4 100644
--- a/diff-no-index.c
+++ b/diff-no-index.c
@@ -67,7 +67,7 @@ static int queue_diff(struct diff_options *o,
 		struct strbuf buffer2 = STRBUF_INIT;
 		struct string_list p1 = STRING_LIST_INIT_DUP;
 		struct string_list p2 = STRING_LIST_INIT_DUP;
-		int i1, i2, ret = 0;
+		int len1 = 0, len2 = 0, i1, i2, ret = 0;
 
 		if (name1 && read_directory(name1, &p1))
 			return -1;
@@ -80,18 +80,23 @@ static int queue_diff(struct diff_options *o,
 			strbuf_addstr(&buffer1, name1);
 			if (buffer1.len && buffer1.buf[buffer1.len - 1] != '/')
 				strbuf_addch(&buffer1, '/');
+			len1 = buffer1.len;
 		}
 
 		if (name2) {
 			strbuf_addstr(&buffer2, name2);
 			if (buffer2.len && buffer2.buf[buffer2.len - 1] != '/')
 				strbuf_addch(&buffer2, '/');
+			len2 = buffer2.len;
 		}
 
 		for (i1 = i2 = 0; !ret && (i1 < p1.nr || i2 < p2.nr); ) {
 			const char *n1, *n2;
 			int comp;
 
+			buffer1.len = len1;
+			buffer2.len = len2;
+
 			if (i1 == p1.nr)
 				comp = 1;
 			else if (i2 == p2.nr)
-- 
1.7.10.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-05-16 14:28 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-16  4:14 [PATCH] diff --no-index: reset temporary buffer lengths on directory iteration Bobby Powers
2012-05-16  6:33 ` René Scharfe
2012-05-16 14:20   ` Bobby Powers
2012-05-16 14:28     ` [PATCH v2] " Bobby Powers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).