Thanks Jamie, I agree with everything you said.  The code would be better
modified as you indicate.

On Sat, Sep 20, 2008 at 11:58 AM, Jamie Lokier <[EMAIL PROTECTED]> wrote:

> Farrell Aultman wrote:
> > The code assumed that when strol is successful, that it will set
> > errno to zero.  This is not the case, at least under uClinux.
>
> It's not the case in general, POSIX doesn't require it to be set to zero.
>
> > The man page does not indicate this either.  What can happen is that
> > errno is already set to non-zero before strol is called, then strol
> > is successful but since strol doesn't reset errno to zero, the next
> > line thinks that strol failed.
>
> That's right.  The correct way to call strtol in general, if you're
> checking errno after, is to set errno to zero before.
>
> Since reading errno can be slow (in threaded programs), you might want
> to check if the result from strtol is LONG_MIN or LONG_MAX before
> checking errno.
>
> -- Jamie
>

Reply via email to