Skip site navigation (1) Skip section navigation (2)

Re: [COMMITTERS] pgsql: Add comments about why errno is set to zero.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
Cc: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: [COMMITTERS] pgsql: Add comments about why errno is set to zero.
Date: 2005-12-02 00:42:45
Message-ID: 18483.1133484165@sss.pgh.pa.us (view raw or flat)
Thread:
Lists: pgsql-committerspgsql-hackers
Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)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

In response to

Responses

pgsql-hackers by date

Next:From: Tom LaneDate: 2005-12-02 00:44:41
Subject: Re: [COMMITTERS] pgsql: Add comments about why errno is set to zero.
Previous:From: Tom LaneDate: 2005-12-02 00:37:04
Subject: Re: [COMMITTERS] pgsql: Add comments about why errno is

pgsql-committers by date

Next:From: Tom LaneDate: 2005-12-02 00:44:41
Subject: Re: [COMMITTERS] pgsql: Add comments about why errno is set to zero.
Previous:From: Tom LaneDate: 2005-12-02 00:37:04
Subject: Re: [COMMITTERS] pgsql: Add comments about why errno is

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group