From: Matthieu Moy Date: Thu, 08 Oct 2015 18:48:41 GMT Subject: Re: [PATCH v2 01/10] ref-filter: implement %(if), %(then), and %(else) atoms Message-ID: In-Reply-To: <1444295885-1657-2-git-send-email-Karthik.188@gmail.com> Karthik Nayak writes: > +static void if_then_else_handler(struct ref_formatting_stack **stack) > +{ > + struct ref_formatting_stack *cur = *stack; > + struct ref_formatting_stack *prev = cur->prev; > + struct if_then_else *if_then_else = (struct if_then_else *)cur->at_end_data; > + You should add if (!if_then_else->then_atom) die(_("format: %%(if) atom used without a %%(then) atom")); here ... > +static void then_atom_handler(struct atom_value *atomv, struct ref_formatting_state *state) > +{ > + struct ref_formatting_stack *cur = state->stack; > + struct if_then_else *if_then_else = NULL; > + > + if (cur->at_end == if_then_else_handler) > + if_then_else = (struct if_then_else *)cur->at_end_data; > + if (!if_then_else) > + die(_("format: %%(then) atom used without an %%(if) atom")); > + if (if_then_else->then_atom) > + die(_("format: %%(then) atom used more than once")); > + if_then_else->then_atom = 1; ... and if (if_then_else->else_atom) die(_("format: %%(then) atom used after %%(else)")); here, just in case (adding the two corresponding test_must_fail wouldn't harm of course). -- Matthieu Moy http://www-verimag.imag.fr/~moy/