Re: [PATCH v2 4/7] avoid looking at errno for short read_in_full() returns
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 27, 2017, 06:59 UTC
- Message-ID
- <xmqqk20k4ofn.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20170927060107.duocwl3mf62zvgjp@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 21 quoted lines
> When a caller tries to read a particular set of bytes via > read_in_full(), there are three possible outcomes: > > 1. An error, in which case -1 is returned and errno is > set. > > 2. A short read, in which fewer bytes are returned and > errno is unspecified (we never saw a read error, so we > may have some random value from whatever syscall failed > last). > > 3. The full read completed successfully. > > Many callers handle cases 1 and 2 together by just checking > the result against the requested size. If their combined > error path looks at errno (e.g., by calling die_errno), they > may report a nonsense value. > > Let's fix these sites by having them distinguish between the > two error cases. That avoids the random errno confusion, and > lets us give more detailed error messages.
The resulting code might be more verbose but I personally think both of them give a lot more clear error indication.