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, Pennsylvania 19073 ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster