Preserve parsed cvar values when string is same

Fixes parsed developer flags on the command line getting reset.
This commit is contained in:
Bill Currie 2019-07-09 20:16:08 +09:00
parent 8c238d3def
commit 452eb5a83d

View file

@ -264,19 +264,21 @@ Cvar_Set (cvar_t *var, const char *value)
}
changed = !strequal (var->string, value);
free ((char*)var->string); // free the old value string
if (changed) {
free ((char*)var->string); // free the old value string
var->string = strdup (value);
var->value = atof (var->string);
var->int_val = atoi (var->string);
VectorZero (var->vec);
vals = sscanf (var->string, "%f %f %f",
&var->vec[0], &var->vec[1], &var->vec[2]);
if (vals == 1)
var->vec[2] = var->vec[1] = var->vec[0];
var->string = strdup (value);
var->value = atof (var->string);
var->int_val = atoi (var->string);
VectorZero (var->vec);
vals = sscanf (var->string, "%f %f %f",
&var->vec[0], &var->vec[1], &var->vec[2]);
if (vals == 1)
var->vec[2] = var->vec[1] = var->vec[0];
if (changed && var->callback)
var->callback (var);
if (var->callback)
var->callback (var);
}
}
VISIBLE void