On Wed, Aug 21, 2013 at 09:21:47PM +0400, Andrey Chernov wrote:
> On 21.08.2013 20:46, Sergey Kandaurov wrote:
> >     number = strtoumax(buf, &endptr, 0);
> >  
> > +   if (number == UINTMAX_MAX && errno == ERANGE) {
> > +           return (-1);
> > +   }
> 
> You need to reset errno before strtoumax() call (errno = 0), because any
> of previous functions may left it as ERANGE.
> 

Thanks for pointing out.
Does the patch look good?

Index: expand_number.c
===================================================================
--- expand_number.c     (revision 254600)
+++ expand_number.c     (working copy)
@@ -53,6 +53,8 @@
        unsigned shift;
        char *endptr;
 
+       errno = 0;
+
        number = strtoumax(buf, &endptr, 0);
 
        if (number == UINTMAX_MAX && errno == ERANGE) {

Index: expand_number.c
===================================================================
--- expand_number.c	(revision 254600)
+++ expand_number.c	(working copy)
@@ -53,6 +53,8 @@
 	unsigned shift;
 	char *endptr;
 
+	errno = 0;
+
 	number = strtoumax(buf, &endptr, 0);
 
 	if (number == UINTMAX_MAX && errno == ERANGE) {

Attachment: pgpw9GN7ErWQJ.pgp
Description: PGP signature

Reply via email to