Merge pull request #5397 from Cacodemon345/qt-locale-changes

Set LC_NUMERIC to "C" in program startup to fix GLSL parameter parsing
This commit is contained in:
Miran Grča
2025-03-28 20:21:58 +01:00
committed by GitHub
2 changed files with 17 additions and 3 deletions

View File

@@ -94,6 +94,8 @@ extern int qt_nvr_save(void);
bool cpu_thread_running = false;
}
#include <locale.h>
void qt_set_sequence_auto_mnemonic(bool b);
#ifdef Q_OS_WINDOWS
@@ -525,6 +527,7 @@ main(int argc, char *argv[])
QApplication app(argc, argv);
QLocale::setDefault(QLocale::C);
setlocale(LC_NUMERIC, "C");
#ifdef Q_OS_WINDOWS
Q_INIT_RESOURCE(darkstyle);

View File

@@ -756,8 +756,9 @@ double
ini_section_get_double(ini_section_t self, const char *name, double def)
{
section_t *section = (section_t *) self;
const entry_t *entry;
double value = 0;
entry_t *entry;
double value = 0;
int res = 0;
if (section == NULL)
return def;
@@ -766,7 +767,17 @@ ini_section_get_double(ini_section_t self, const char *name, double def)
if (entry == NULL)
return def;
sscanf(entry->data, "%lg", &value);
res = sscanf(entry->data, "%lg", &value);
if (res == EOF || res <= 0) {
int i = 0;
for (i = 0; i < strlen(entry->data); i++) {
if (entry->data[i] == ',') {
entry->data[i] = '.';
entry->wdata[i] = L'.';
}
}
(void)sscanf(entry->data, "%lg", &value);
}
return value;
}