Thread (2 messages) flat view 2 messages, 2 authors, 2016-06-15

Re: bug: "fatal: cannot pread pack file", version 1.7.5.4

From: Lars Winterfeld <hidden>
Date: 2016-06-15 22:54:29

Junio C Hamano:
Jeff King [off-list ref] writes:
quoted
On Tue, Jul 03, 2012 at 11:25:16AM +0700, Nguyen Thai Ngoc Duy wrote:
quoted
On Tue, Jul 3, 2012 at 10:45 AM, Jeff King [off-list ref] wrote:
quoted
On Tue, Jul 03, 2012 at 12:43:42AM +0200, Andreas Schwab wrote:
quoted
Jeff King [off-list ref] writes:
quoted
It's very odd for pread to report ENOENT (since it is always operating
on an already-opened file descriptor).
It doesn't, but gettext will clobber errno:

              n = pread(pack_fd, inbuf, n, from);
              if (n < 0)
                      die_errno(_("cannot pread pack file"));

There is nothing that saves errno.  This isn't limited to i18n though,
any function call in the arguments may potentially clobber errno.
That's horribly lame of gettext. I don't expect arbitrary functions to
save errno, but when the entire purpose of a function is to be a
non-intrusive wrapper to massage messages to the user, it seems kind of
evil to overwrite errno. Isn't the whole point of calling it "_" that
you don't want to or have to notice it?
Agreed.
Hmm. According to gettext(3):

  ERRORS
         errno is not modified.

And googling for "gettext" and "errno" reveals several bugfixes in GNU
gettext to make sure that gettext preserves errno. I wonder if there are
systems where that is not the case, though; I don't know what non-GNU
gettext implementations are in common use these days. I'd still be
curious to hear what platform the server is for this bug report.
Hrm, has this ever been resolved?
Thank you for asking.
My local git version is 1.7.5.4, the server version that I actually
ended up pushing the files to was however still some 1.6.x.
So it was a false alarm. Sorry about that.

As far as I can follow, there is no non-GNU gettext involved. Thanks
for digging that deep into the problem, but it was my fault, probably
not something about lost errno.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help