parse_insn_line(): improve error message when parsing failed
In the case that a `get_oid()` call failed, we showed some rather bogus part of the line instead of the precise string we sent to said function. That makes it rather hard for users to understand what is going wrong, so let's fix that. While at it, return a negative value from `parse_insn_line()` in case of an error, as per our convention. This function's only caller, `todo_list_parse_insn_buffer()`, cares only whether that return value is non-zero or not, i.e. does not need to be changed. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Johannes Schindelin committed
Jan 23, 2020 at 12:28 UTC
d859dcad945755ad7d3ada843eecf2843b3c5470
1 file changed
+4
-3
sequencer.c
+4
-3
@@ -2118,6 +2118,8 @@ static int parse_insn_line(struct repository *r, struct todo_item *item,
2118
saved = *end_of_object_name;
2119
*end_of_object_name = '\0';
2120
status = get_oid(bol, &commit_oid);
2121
+ if (status < 0)
2122
+ error(_("could not parse '%s'"), bol); /* return later */
2123
*end_of_object_name = saved;
2124
2125
bol = end_of_object_name + strspn(end_of_object_name, " \t");
@@ -2125,11 +2127,10 @@ static int parse_insn_line(struct repository *r, struct todo_item *item,
2127
item->arg_len = (int)(eol - bol);
2128
2129
if (status < 0)
2128
- return error(_("could not parse '%.*s'"),
2129
- (int)(end_of_object_name - bol), bol);
2130
+ return status;
2131
2132
item->commit = lookup_commit_reference(r, &commit_oid);
2132
- return !item->commit;
2133
+ return item->commit ? 0 : -1;
2134
}
2135
2136
int sequencer_get_last_command(struct repository *r, enum replay_action *action)