Re: surprising error message in parse_opt_with_commit
From: Tim Harper <hidden>
Date: 2016-06-15 22:47:11
On Thu, Aug 6, 2009 at 1:34 PM, Shawn O. Pearce[off-list ref] wrote:
Tim Harper [off-list ref] wrote:quoted
610 int parse_opt_with_commit(const struct option *opt, const char *arg, int unset) 611 { 612 unsigned char sha1[20]; 613 struct commit *commit; 614 615 if (!arg) 616 return -1; 617 if (get_sha1(arg, sha1)) 618 return error("malformed object name %s", arg); 619 commit = lookup_commit_reference(sha1); 620 if (!commit) 621 return error("no such commit %s", arg); 622 commit_list_insert(commit, opt->value); 623 return 0; 624 } It appears the get_sha1 call is returning true, causing the 'malformed object name' error to be returned. However, it seems that ideally since efabdfb is not malformed (it would be a valid ref if it existed), the execution path should continue to line 619, receive no commit, and fail on 621.get_sha1 is responsible for expanding an abbreviated ID to the full ID. If it can't do the expansion, it errors out. The code is correct as-is, though the error message on 618 is a bit odd. -- Shawn.
ok, that makes more sense. I notice if I pass a full, mutated 40-character sha1 commit, I get the error message I expect.