From 9a810c5e336afe10188c7cf3fb68c598d3c2a876 Mon Sep 17 00:00:00 2001 From: Ryan Roden-Corrent Date: Thu, 16 Apr 2015 15:32:16 -0400 Subject: [PATCH] git_config_delete: search until last section. If git_config_delete is to work properly in the presence of duplicate section headers, it cannot stop searching at the end of the first matching section, as there may be another matching section later. When config_write is used for deletion (value = NULL), it may only terminate when the desired key is found or there are no sections left to parse. --- src/config_file.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/config_file.c b/src/config_file.c index 350473434..7c6cb81fe 100644 --- a/src/config_file.c +++ b/src/config_file.c @@ -1460,9 +1460,12 @@ static int config_write(diskfile_backend *cfg, const char *key, const regex_t *p * don't loose that information, but we only need to * update post_start if we're going to use it in this * iteration. + * If the section doesn't match and we are trying to delete an entry + * (value == NULL), we must continue searching; there may be another + * matching section later. */ if (!section_matches) { - if (!last_section_matched) { + if (!last_section_matched || value == NULL) { reader_consume_line(reader); continue; }