gallium/util: make use of strtol() in debug_get_num_option()
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 14 Sep 2016 18:37:11 +0000 (20:37 +0200)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 26 Sep 2016 17:39:04 +0000 (19:39 +0200)
This allows to use hexadecimal numbers which are automatically
detected by strtol() when the base is 0.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Tested-by: Brian Paul <brianp@vmware.com>
src/gallium/auxiliary/util/u_debug.c

index 4619526094c0d5f15744c47958cf59f0bdadf686..dd3e16791d6384d5b5444ff961b063d492ead9ae 100644 (file)
@@ -203,25 +203,16 @@ debug_get_num_option(const char *name, long dfault)
    const char *str;
 
    str = os_get_option(name);
-   if (!str)
+   if (!str) {
       result = dfault;
-   else {
-      long sign;
-      char c;
-      c = *str++;
-      if (c == '-') {
-        sign = -1;
-        c = *str++;
-      }
-      else {
-        sign = 1;
-      }
-      result = 0;
-      while ('0' <= c && c <= '9') {
-        result = result*10 + (c - '0');
-        c = *str++;
+   } else {
+      char *endptr;
+
+      result = strtol(str, &endptr, 0);
+      if (str == endptr) {
+         /* Restore the default value when no digits were found. */
+         result = dfault;
       }
-      result *= sign;
    }
 
    if (debug_get_option_should_print())