From cfc4351216961ba083563f1686676a2daba8616e Mon Sep 17 00:00:00 2001
From: zoltanvb <101990835+zoltanvb@users.noreply.github.com>
Date: Tue, 31 Oct 2023 20:03:24 +0100
Subject: [PATCH] Set fixed locale for numbers, close to config read/write
 (#15782)

Move setlocale() closer to config file read/write.
---
 command.c   | 5 +++++
 retroarch.c | 4 ++++
 2 files changed, 9 insertions(+)

diff --git a/command.c b/command.c
index 5c07767f7171..f95084407cc1 100644
--- a/command.c
+++ b/command.c
@@ -18,6 +18,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stddef.h>
+#include <locale.h>
 #ifdef HAVE_NETWORKING
 #include <net/net_compat.h>
 #include <net/net_socket.h>
@@ -1166,6 +1167,10 @@ bool command_event_save_config(
    const char *str  = path_exists ? config_path :
       path_get(RARCH_PATH_CONFIG);
 
+   /* Workaround for libdecor 0.2.0 setting unwanted locale */
+#if defined(HAVE_WAYLAND) && defined(HAVE_DYNAMIC)
+   setlocale(LC_NUMERIC,"C");
+#endif
    if (path_exists && config_save_file(config_path))
    {
       snprintf(s, len, "%s \"%s\".",
diff --git a/retroarch.c b/retroarch.c
index 729b5a3ac907..2953c652086a 100644
--- a/retroarch.c
+++ b/retroarch.c
@@ -5917,6 +5917,10 @@ static bool retroarch_parse_input_and_config(
    if (!(p_rarch->flags & RARCH_FLAGS_BLOCK_CONFIG_READ))
 #endif
    {
+      /* Workaround for libdecor 0.2.0 setting unwanted locale */
+#if defined(HAVE_WAYLAND) && defined(HAVE_DYNAMIC)
+      setlocale(LC_NUMERIC,"C");
+#endif      
       /* If this is a static build, load salamander
        * config file first (sets RARCH_PATH_CORE) */
 #if !defined(HAVE_DYNAMIC)