Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Jan 2002 23:53:58 -0500
From:      "Brian F. Feldman" <green@FreeBSD.ORG>
To:        Chad David <davidc@acns.ab.ca>
Cc:        Bruce Evans <bde@zeta.org.au>, arch@FreeBSD.ORG
Subject:   Re: strtod() 
Message-ID:  <200201270453.g0R4rwi92912@green.bikeshed.org>
In-Reply-To: Message from Chad David <davidc@acns.ab.ca>  of "Sat, 26 Jan 2002 16:29:24 MST." <20020126162924.A7726@colnta.acns.ab.ca> 

next in thread | previous in thread | raw e-mail | index | archive | help
Chad David <davidc@acns.ab.ca> wrote:
> > > Code like this is what I'm dealing with.  My point is that if you set
> > > errno == 0, and then after the function it is != 0, an error DID occur,
> > > as long as the return value == 0.0 or HUGE_VAL I guess.
> > > 
> > > Am I making any sense?
> > 
> > Not "as long as the return value" is anything!  Why should the function be 
> > changing errno if it hasn't generated an error?  These are particularly 
> > difficult functions to use in the first place, and they really shouldn't be 
> > made more-so by gratuitously changing errno.  It's not hard to save errno, 
> > either, in the library call...
> 
> I'm not sure if you are agreeing with me, or disagreeing with me :).
> 
> When 0.0 is returned and errno == EINVAL a lot of code assumes there was
> an error, but current always returns with errno == EINVAL, which breaks
> this code when "0.0" is converted..

The problem is that 0.0 could be the right return value, but if errno was 
EINVAL before calling strtod(), the caller makes a mistake in assuming 
"retval == 0.0 && errno == EINVAL means failure".

> If you are suggesting that strtod() etc. should save errno on entry and
> then reset it on return (unless it wants to return its own error) then I
> think I agree with that.

If strtod() wants to use errno internally, that's fine, but I personally 
really expect it to not modify errno without also intending to return an 
error; that's why saving at entry and restoring at exit is my preference for 
these functions.

-- 
Brian Fundakowski Feldman                           \'[ FreeBSD ]''''''''''\
  <> green@FreeBSD.org  <> bfeldman@tislabs.com      \  The Power to Serve! \
 Opinions expressed are my own.                       \,,,,,,,,,,,,,,,,,,,,,,\



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-arch" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200201270453.g0R4rwi92912>