fix parsing "-inf" in config variables
The default for export-silence-threshold is -INFINITY, written as "-inf" (by cfgtool) into system_config. Yet parsing the config using a std::stringstream results in "0" (due to bugs in various libc++).
This commit is contained in:
@@ -107,3 +107,10 @@ ConfigVariableBase::miss ()
|
|||||||
// is set but to the same value as it already has
|
// is set but to the same value as it already has
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Specialisation of ConfigVariable to deal with float (-inf etc)
|
||||||
|
* http://stackoverflow.com/questions/23374095/should-a-stringstream-parse-infinity-as-an-infinite-value
|
||||||
|
*/
|
||||||
|
template<> void
|
||||||
|
ConfigVariable<float>::set_from_string (std::string const & s) {
|
||||||
|
value = std::strtof (s.c_str(), NULL);
|
||||||
|
}
|
||||||
|
|||||||
@@ -89,6 +89,10 @@ class /*LIBPBD_API*/ ConfigVariable : public ConfigVariableBase
|
|||||||
T value;
|
T value;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Specialisation of ConfigVariable to deal with float (-inf etc) */
|
||||||
|
template<> void
|
||||||
|
ConfigVariable<float>::set_from_string (std::string const & s);
|
||||||
|
|
||||||
/** Specialisation of ConfigVariable for std::string to cope with whitespace properly */
|
/** Specialisation of ConfigVariable for std::string to cope with whitespace properly */
|
||||||
template<>
|
template<>
|
||||||
class /*LIBPBD_API*/ ConfigVariable<std::string> : public ConfigVariableBase
|
class /*LIBPBD_API*/ ConfigVariable<std::string> : public ConfigVariableBase
|
||||||
|
|||||||
Reference in New Issue
Block a user