]> git.ipfire.org Git - thirdparty/gnulib.git/commitdiff
localename-unsafe: Improve Windows LCID lookup cache.
authorBruno Haible <bruno@clisp.org>
Wed, 10 Dec 2025 21:22:39 +0000 (22:22 +0100)
committerBruno Haible <bruno@clisp.org>
Wed, 10 Dec 2025 21:22:39 +0000 (22:22 +0100)
* lib/localename-unsafe.c (get_lcid): Don't overrun the last_locale array.

ChangeLog
lib/localename-unsafe.c

index 52ac60d385dfb8d6d90b9e483d42fd7bf5a2db45..d9e20d56b2abc01bf1213cd7bd8add959de67f0a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2025-12-10  Bruno Haible  <bruno@clisp.org>
+
+       localename-unsafe: Improve Windows LCID lookup cache.
+       * lib/localename-unsafe.c (get_lcid): Don't overrun the last_locale array.
+
 2025-12-10  Bruno Haible  <bruno@clisp.org>
 
        canonicalize-lgpl: Fix UMR introduced in recent change.
index 9177b6939dcf8fe2f52cb76ce03f0c9715998e26..f70cedafbc7fe1b80d39ce7723e6d52984656f4b 100644 (file)
@@ -2586,7 +2586,7 @@ get_lcid (const char *locale_name)
 {
   /* A simple cache.  */
   static LCID last_lcid;
-  static char last_locale[1000];
+  static char last_locale[sizeof (lname)];
 
   /* Lock while looking for an LCID, to protect access to static
      variables: last_lcid, last_locale, found_lcid, and lname.  */
@@ -2603,7 +2603,7 @@ get_lcid (const char *locale_name)
   if (found_lcid > 0)
     {
       last_lcid = found_lcid;
-      strcpy (last_locale, locale_name);
+      strcpy (last_locale, lname);
     }
   glwthread_mutex_unlock (&get_lcid_lock);
   return found_lcid;