Skip to content
  • Jeff King's avatar
    avoid looking at errno for short read_in_full() returns · 90dca671
    Jeff King authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    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.
    
    Signed-off-by: default avatarJeff King <peff@peff.net>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    90dca671