diff options
author | Bryan Donlan <bdonlan@fushizen.net> | 2008-05-04 01:37:52 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-05-05 14:17:00 -0700 |
commit | e5c349ba112fc53832c757cef122297718d3a175 (patch) | |
tree | bfd7760127650321edd298cae96f8bc663141822 /config.c | |
parent | 97b88dd58cad9d60427af9a956f90f7803f55db8 (diff) | |
download | git-e5c349ba112fc53832c757cef122297718d3a175.tar.gz |
config.c: Escape backslashes in section names properly
If an element of the configuration key name other than the first or last
contains a backslash, it is not escaped on output, but is treated as an
escape sequence on input. Thus, the backslash is lost when re-loading
the configuration.
This patch corrects this by having backslashes escaped properly, and
introduces a new test for this bug.
Signed-off-by: Bryan Donlan <bdonlan@fushizen.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'config.c')
-rw-r--r-- | config.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -680,7 +680,7 @@ static int store_write_section(int fd, const char* key) if (dot) { strbuf_addf(&sb, "[%.*s \"", (int)(dot - key), key); for (i = dot - key + 1; i < store.baselen; i++) { - if (key[i] == '"') + if (key[i] == '"' || key[i] == '\\') strbuf_addch(&sb, '\\'); strbuf_addch(&sb, key[i]); } |