summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsean <seanlkml@sympatico.ca>2006-05-06 14:14:02 -0400
committerJunio C Hamano <junkio@cox.net>2006-05-13 14:00:16 -0700
commitbdf0ef0824ecca427ec04ac047ffe4aaf73ace5a (patch)
tree4307fe678f27e6ba32a75832d9d99f8359e214b6
parent618faa1dc7cb5898473861c286391d0a4b043107 (diff)
downloadgit-bdf0ef0824ecca427ec04ac047ffe4aaf73ace5a.tar.gz
Another config file parsing fix.
If the variable we need to store should go into a section that currently only has a single variable (not matching the one we're trying to insert), we will already be into the next section before we notice we've bypassed the correct location to insert the variable. To handle this case we store the current location as soon as we find a variable matching the section of our new variable. This breakage was brought up by Linus. Signed-off-by: Sean Estabrooks <seanlkml@sympatico.ca> Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--config.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/config.c b/config.c
index adb5ce476a..0f518c957c 100644
--- a/config.c
+++ b/config.c
@@ -336,8 +336,10 @@ static int store_aux(const char* key, const char* value)
store.state = KEY_SEEN;
store.seen++;
} else if (strrchr(key, '.') - key == store.baselen &&
- !strncmp(key, store.key, store.baselen))
+ !strncmp(key, store.key, store.baselen)) {
store.state = SECTION_SEEN;
+ store.offset[store.seen] = ftell(config_file);
+ }
}
return 0;
}