[gjs/locale-agnostic-camel-properties: 1/5] jsapi-util-strings: Ignore locale to compute the upper case of a char




commit 753f70ae577d1a31a6eb1a4413e2a8c626e75b1c
Author: Marco Trevisan (Treviño) <mail 3v1n0 net>
Date:   Thu Apr 28 19:53:59 2022 +0200

    jsapi-util-strings: Ignore locale to compute the upper case of a char
    
    We used to compute camel-case name of properties using toupper(),
    however this is locale-dependent, while in this case we want to be sure
    that we're only using ASCII values.
    
    This is particularly problematic in Turkish (and maybe other locales)
    because there 'i'.toLocaleUpperCase() is 'İ', that is definitely not an
    ASCII char, causing problems to with our generated properties.
    
    See: https://github.com/micheleg/dash-to-dock/issues/1687

 gjs/gjs_pch.hh            | 1 -
 gjs/jsapi-util-string.cpp | 3 +--
 2 files changed, 1 insertion(+), 3 deletions(-)
---
diff --git a/gjs/gjs_pch.hh b/gjs/gjs_pch.hh
index 46bea8a9b..6f1b0b4fb 100644
--- a/gjs/gjs_pch.hh
+++ b/gjs/gjs_pch.hh
@@ -28,7 +28,6 @@
 #include <vector>
 
 #include <assert.h>
-#include <ctype.h>
 #include <errno.h>
 #include <ffi.h>
 #include <gio/gio.h>
diff --git a/gjs/jsapi-util-string.cpp b/gjs/jsapi-util-string.cpp
index c78069a83..a39a0c055 100644
--- a/gjs/jsapi-util-string.cpp
+++ b/gjs/jsapi-util-string.cpp
@@ -4,7 +4,6 @@
 
 #include <config.h>
 
-#include <ctype.h>  // for toupper
 #include <stdint.h>
 #include <string.h>     // for size_t, strlen
 #include <sys/types.h>  // for ssize_t
@@ -59,7 +58,7 @@ GjsAutoChar gjs_hyphen_to_camel(const char* str) {
         if (*input_iter == '-') {
             uppercase_next = true;
         } else if (uppercase_next) {
-            *output_iter++ = toupper(*input_iter);
+            *output_iter++ = g_ascii_toupper(*input_iter);
             uppercase_next = false;
         } else {
             *output_iter++ = *input_iter;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]