summaryrefslogtreecommitdiff
path: root/ws.c
diff options
context:
space:
mode:
authorJohannes Sixt <j6t@kdbg.org>2010-11-30 08:22:04 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-12-01 22:34:00 (GMT)
commitd35711adc4cffe0c4aebd85c197080c7163bcb77 (patch)
treecc4f136bc277e1b385ed8c2e1b836fbf872cb434 /ws.c
parenta347b17f15dd5358ced8d447af144a46b224982d (diff)
downloadgit-d35711adc4cffe0c4aebd85c197080c7163bcb77.zip
git-d35711adc4cffe0c4aebd85c197080c7163bcb77.tar.gz
git-d35711adc4cffe0c4aebd85c197080c7163bcb77.tar.bz2
apply --whitespace=fix: fix tab-in-indent
When the whitespace rule tab-in-indent is enabled, apply --whitespace=fix replaces tabs by the appropriate amount of blanks. The code used "dst->len % 8" as the criterion to stop adding blanks. But it forgot that dst holds more than just the current line. Consequently, the modulus was computed correctly only for the first added line, but not for the second and subsequent lines. Fix it. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Acked-by: Chris Webb <chris@arachsys.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'ws.c')
-rw-r--r--ws.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ws.c b/ws.c
index d7b8c33..b282e8c 100644
--- a/ws.c
+++ b/ws.c
@@ -362,12 +362,13 @@ void ws_fix_copy(struct strbuf *dst, const char *src, int len, unsigned ws_rule,
fixed = 1;
} else if ((ws_rule & WS_TAB_IN_INDENT) && last_tab_in_indent >= 0) {
/* Expand tabs into spaces */
+ int start = dst->len;
int last = last_tab_in_indent + 1;
for (i = 0; i < last; i++) {
if (src[i] == '\t')
do {
strbuf_addch(dst, ' ');
- } while (dst->len % 8);
+ } while ((dst->len - start) % 8);
else
strbuf_addch(dst, src[i]);
}