diff --git a/alternatives.c b/alternatives.c index 07bf9c2..d0d394c 100644 --- a/alternatives.c +++ b/alternatives.c @@ -325,7 +325,7 @@ static int readConfig(struct alternativeSet *set, const char *title, set->alts = NULL; set->numAlts = 0; set->mode = AUTO; - set->best = 0; + set->best = -1; set->current = -1; path = alloca(strlen(stateDir) + strlen(title) + 2); @@ -486,11 +486,13 @@ static int readConfig(struct alternativeSet *set, const char *title, } set->alts = realloc(set->alts, (set->numAlts + 1) * sizeof(*set->alts)); - set->alts[set->numAlts++] = newAlt; + set->alts[set->numAlts] = newAlt; - if (newAlt.priority > set->alts[set->best].priority) + if (set->best == -1 || newAlt.priority > set->alts[set->best].priority) set->best = set->numAlts; + set->numAlts++; + memset(&newAlt, 0, sizeof(struct alternative)); nextLine(&buf, &line);