2018-03-21 23:36 GMT+03:00 Junio C Hamano <gitster@xxxxxxxxx>: > Olga Telezhnaya <olyatelezhnaya@xxxxxxxxx> writes: > >> @@ -2144,13 +2151,15 @@ int format_ref_array_item(struct ref_array_item *info, >> >> for (cp = format->format; *cp && (sp = find_next(cp)); cp = ep + 1) { >> struct atom_value *atomv; >> + int pos; >> >> ep = strchr(sp, ')'); >> if (cp < sp) >> append_literal(cp, sp, &state); >> - get_ref_atom_value(info, >> - parse_ref_filter_atom(format, sp + 2, ep), >> - &atomv); >> + pos = parse_ref_filter_atom(format, sp + 2, ep, error_buf); >> + if (pos < 0) >> + return -1; >> + get_ref_atom_value(info, pos, &atomv); >> if (atomv->handler(atomv, &state, error_buf)) >> return -1; >> } > > These error returns leave the formatting state "state" on the stack > holding onto its resources, no? Yes, you are right, thanks a lot! > > The only thing the caller of format_ref_array_item() that notices an > error return does is to die even after this series, so in that sense > it does not matter (yet), but it still feels somewhat wrong. > I am sure I need to fix it anyway, thanks.