Browse Source

small simplifications in code for 'lua_strx2number'

Roberto Ierusalimschy 10 years ago
parent
commit
59fbbf0a65
1 changed files with 13 additions and 15 deletions
  1. 13 15
      lobject.c

+ 13 - 15
lobject.c

@@ -1,5 +1,5 @@
 /*
 /*
-** $Id: lobject.c,v 2.95 2014/10/25 11:50:46 roberto Exp roberto $
+** $Id: lobject.c,v 2.96 2014/10/27 19:21:56 roberto Exp roberto $
 ** Some generic functions over Lua objects
 ** Some generic functions over Lua objects
 ** See Copyright Notice in lua.h
 ** See Copyright Notice in lua.h
 */
 */
@@ -162,8 +162,13 @@ static int isneg (const char **s) {
 }
 }
 
 
 
 
-/* Lua's implementation for 'lua_strx2number' */
-#if !defined(lua_strx2number) 		/* { */
+
+/*
+** {==================================================================
+** Lua's implementation for 'lua_strx2number'
+** ===================================================================
+*/
+#if !defined(lua_strx2number)
 
 
 #include <math.h>
 #include <math.h>
 
 
@@ -193,18 +198,12 @@ static lua_Number lua_strx2number (const char *s, char **endptr) {
       else dot = 1;
       else dot = 1;
     }
     }
     else if (lisxdigit(cast_uchar(*s))) {
     else if (lisxdigit(cast_uchar(*s))) {
-      if (sigdig == 0 && *s == '0') {  /* non-significant zero? */
+      if (sigdig == 0 && *s == '0')  /* non-significant digit (zero)? */
         nosigdig++;
         nosigdig++;
-        if (dot) e--;  /* zero after dot? correct exponent */
-      }
-      else {
-        if (++sigdig <= MAXSIGDIG) {  /* can read it without overflow? */
+      else if (++sigdig <= MAXSIGDIG)  /* can read it without overflow? */
           r = (r * cast_num(16.0)) + luaO_hexavalue(cast_uchar(*s));
           r = (r * cast_num(16.0)) + luaO_hexavalue(cast_uchar(*s));
-          if (dot) e--;  /* decimal digit */
-        }
-        else  /* too many digits; ignore */ 
-          if (!dot) e++;  /* still count it for exponent */
-      }
+      else e++; /* too many digits; ignore, but still count for exponent */
+      if (dot) e--;  /* decimal digit? correct exponent */
     }
     }
     else break;  /* neither a dot nor a digit */
     else break;  /* neither a dot nor a digit */
   }
   }
@@ -229,8 +228,7 @@ static lua_Number lua_strx2number (const char *s, char **endptr) {
   return l_mathop(ldexp)(r, e);
   return l_mathop(ldexp)(r, e);
 }
 }
 
 
-#endif					/* } */
-
+#endif
 /* }====================================================== */
 /* }====================================================== */