Fix a very nasty conversion bug in Option c'tor
authorMarco Costalba <mcostalba@gmail.com>
Sun, 12 Apr 2009 00:09:03 +0000 (01:09 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 12 Apr 2009 00:10:50 +0000 (01:10 +0100)
Sometimes C++ can be really bad!

In this case an hard coded c string selects Option c'tor
with int argument instead of the std::string one becuase
it is considered a better matching by the compiler.

Fix the bug changing the argument type from std::string to
const char* so to be a better match then the int one.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/ucioption.cpp

index c31a49e..2eb7d1c 100644 (file)
@@ -64,7 +64,7 @@ namespace {
     size_t idx;
 
     Option();
-    Option(const std::string& defaultValue, OptionType = STRING);
+    Option(const char* defaultValue, OptionType = STRING);
     Option(bool defaultValue, OptionType = CHECK);
     Option(int defaultValue, int minValue, int maxValue);
 
@@ -342,7 +342,7 @@ namespace {
 
   Option::Option() {} // To allow insertion in a std::map
 
-  Option::Option(const std::string& def, OptionType t)
+  Option::Option(const char* def, OptionType t)
   : defaultValue(def), currentValue(def), type(t), idx(options.size()), minValue(0), maxValue(0) {}
 
   Option::Option(bool def, OptionType t)