setting_set_with_string_representation - avoid sscanf for trivial
operations when we can use strtol/strtoul/strtof
This commit is contained in:
parent
27704a18de
commit
3ebfcbc7c7
|
@ -1011,6 +1011,7 @@ static void setting_get_string_representation_int(rarch_setting_t *setting,
|
||||||
int setting_set_with_string_representation(rarch_setting_t* setting,
|
int setting_set_with_string_representation(rarch_setting_t* setting,
|
||||||
const char* value)
|
const char* value)
|
||||||
{
|
{
|
||||||
|
char *ptr;
|
||||||
double min, max;
|
double min, max;
|
||||||
uint64_t flags;
|
uint64_t flags;
|
||||||
if (!setting || !value)
|
if (!setting || !value)
|
||||||
|
@ -1023,7 +1024,7 @@ int setting_set_with_string_representation(rarch_setting_t* setting,
|
||||||
switch (setting->type)
|
switch (setting->type)
|
||||||
{
|
{
|
||||||
case ST_INT:
|
case ST_INT:
|
||||||
sscanf(value, "%d", setting->value.target.integer);
|
*setting->value.target.integer = (int)strtol(value, &ptr, 10);
|
||||||
if (flags & SD_FLAG_HAS_RANGE)
|
if (flags & SD_FLAG_HAS_RANGE)
|
||||||
{
|
{
|
||||||
if (setting->enforce_minrange && *setting->value.target.integer < min)
|
if (setting->enforce_minrange && *setting->value.target.integer < min)
|
||||||
|
@ -1039,7 +1040,7 @@ int setting_set_with_string_representation(rarch_setting_t* setting,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ST_UINT:
|
case ST_UINT:
|
||||||
sscanf(value, "%u", setting->value.target.unsigned_integer);
|
*setting->value.target.unsigned_integer = (unsigned int)strtoul(value, &ptr, 10);
|
||||||
if (flags & SD_FLAG_HAS_RANGE)
|
if (flags & SD_FLAG_HAS_RANGE)
|
||||||
{
|
{
|
||||||
if (setting->enforce_minrange && *setting->value.target.unsigned_integer < min)
|
if (setting->enforce_minrange && *setting->value.target.unsigned_integer < min)
|
||||||
|
@ -1071,7 +1072,7 @@ int setting_set_with_string_representation(rarch_setting_t* setting,
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ST_FLOAT:
|
case ST_FLOAT:
|
||||||
sscanf(value, "%f", setting->value.target.fraction);
|
*setting->value.target.fraction = strtof(value, &ptr);
|
||||||
if (flags & SD_FLAG_HAS_RANGE)
|
if (flags & SD_FLAG_HAS_RANGE)
|
||||||
{
|
{
|
||||||
if (setting->enforce_minrange && *setting->value.target.fraction < min)
|
if (setting->enforce_minrange && *setting->value.target.fraction < min)
|
||||||
|
|
Loading…
Reference in New Issue