Tom Lane wrote:
> Oliver Elphick <[EMAIL PROTECTED]> writes:
> > On Mon, 2004-05-31 at 19:55, Tom Lane wrote:
> >> I can't duplicate that here.  It looks to me like the probable
> >> explanation is a broken or incompatible version of strerror_r() on your
> >> machine.  Does the failure go away if you build without thread-safety?
> 
> > Yes it does.
> > I'll see if I can run with a debugging libc and find it.
> 
> First you might want to check which flavor of strerror_r() your platform
> has --- does it return int or char* ?  The Linux man page for
> strerror_r() says
> 
>    strerror_r() with prototype as given above is specified by  SUSv3,  and
>    was  in  use  under Digital Unix and HP Unix. An incompatible function,
>    with prototype
> 
>        char *strerror_r(int errnum, char *buf, size_t n);
> 
>    is a GNU extension used by glibc (since 2.0), and must be  regarded  as
>    obsolete  in view of SUSv3.  The GNU version may, but need not, use the
>    user-supplied buffer.  If it does, the result may be truncated in  case
>    the  supplied buffer is too small. The result is always NUL-terminated.
> 
> The code we have appears to assume that the result will always be placed
> in the user-supplied buffer, which is apparently NOT what the glibc
> version does.

What does "may, but need not, use the user-supplied buffer" supposed to
mean in practical terms.  How do they expect us to use it?

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [EMAIL PROTECTED]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to