Re: [COMMITTERS] pgsql: Add comments about why errno is set - Mailing list pgsql-hackers

From Bruce Momjian
Subject Re: [COMMITTERS] pgsql: Add comments about why errno is set
Date
Msg-id 200512020249.jB22nLd10985@candle.pha.pa.us
Whole thread Raw
In response to Re: [COMMITTERS] pgsql: Add comments about why errno is set to zero.  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers
OK, comments removed, and comment added to port/strtol.c.

---------------------------------------------------------------------------

Tom Lane wrote:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > I modified it to:
> >         errno = 0;  /* avoid having to check the result for failure */
> 
> Just for the record, that's *still* wrong.  It implies that if we
> tested (result == LONG_MAX && errno == ERANGE), without zeroing
> errno beforehand, the code would be correct.  But it would not,
> because the errno value could still be leftover.  The plain fact
> of the matter is that if you're going to check for strtol overflow at
> all, you have to zero errno beforehand.  This is perfectly well
> explained in the strtol spec page, and I see no need to duplicate it:
> 
>     Because 0, LONG_MIN and LONG_MAX are returned on error and are
>     also valid returns on success, an application wishing to check
>     for error situations should set errno to 0, then call strtol(),
>     then check errno.
> 
>             regards, tom lane
> 

--  Bruce Momjian                        |  http://candle.pha.pa.us pgman@candle.pha.pa.us               |  (610)
359-1001+  If your life is a hard drive,     |  13 Roberts Road +  Christ can be your backup.        |  Newtown Square,
Pennsylvania19073
 


pgsql-hackers by date:

Previous
From: Christopher Kings-Lynne
Date:
Subject: Re: Reducing relation locking overhead
Next
From: "Greg Sabino Mullane"
Date:
Subject: Re: Windows installation notes