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.
This commit is contained in:
Ryan Roden-Corrent 2015-04-16 15:32:16 -04:00
parent f56a417de4
commit 9a810c5e33

View File

@ -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;
}