swr: [rasterizer core] allow hexadecimal for integer knobs
authorTim Rowley <timothy.o.rowley@intel.com>
Tue, 19 Jul 2016 18:51:46 +0000 (12:51 -0600)
committerTim Rowley <timothy.o.rowley@intel.com>
Thu, 4 Aug 2016 18:52:12 +0000 (13:52 -0500)
Signed-off-by: Tim Rowley <timothy.o.rowley@intel.com>
src/gallium/drivers/swr/rasterizer/core/knobs_init.h

index adf738c1bedd0cd6e6f17450be55238a93c136b5..ba2df2292f0a7536ec9dc4a8ddffb6222fd27d81 100644 (file)
@@ -38,7 +38,9 @@ template <typename T>
 static inline void ConvertEnvToKnob(const char* pOverride, T& knobValue)
 {
     uint32_t value = 0;
-    if (sscanf(pOverride, "%u", &value))
+    char* pStopped = nullptr;
+    value = strtoul(pOverride, &pStopped, 0);
+    if (pStopped != pOverride)
     {
         knobValue = static_cast<T>(value);
     }
@@ -64,10 +66,11 @@ static inline void ConvertEnvToKnob(const char* pOverride, bool& knobValue)
 
     // Try converting to a number and casting to bool
     uint32_t value = 0;
-    if (sscanf(pOverride, "%u", &value))
+    char* pStopped = nullptr;
+    value = strtoul(pOverride, &pStopped, 0);
+    if (pStopped != pOverride)
     {
         knobValue = value != 0;
-        return;
     }
 }