Another config file parsing fix.
authorsean <seanlkml@sympatico.ca>
Sat, 6 May 2006 18:14:02 +0000 (14:14 -0400)
committerJunio C Hamano <junkio@cox.net>
Sat, 13 May 2006 21:00:16 +0000 (14:00 -0700)
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>
config.c

index adb5ce476a242d8ab92f3b15018a6c2c32370990..0f518c957cda48bb4fdc3aa7b472bb8a1c26a3bf 100644 (file)
--- 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;
 }