* Bug 16632 fixed: now scilab starts with unsupported locale on macOS 79/21679/4
mottelet [Tue, 19 Jan 2021 15:56:45 +0000 (16:56 +0100)]
http://bugzilla.scilab.org/show_bug.cgi?id=16632

Change-Id: Iaa378f254c3ec0bd807d50f152242c1cb53021ca

scilab/CHANGES.md
scilab/modules/localization/src/c/charEncoding.c
scilab/modules/localization/src/c/setgetlanguage.c

index 9f4248d..f305e62 100644 (file)
@@ -426,6 +426,7 @@ Bug Fixes
 * [#16624](https://bugzilla.scilab.org/16624): `fullfile` badly handled any forced final file separator when building a directory's path.
 * [#16626](https://bugzilla.scilab.org/16626): == and <> between libraries were no longer defined.
 * [#16629](https://bugzilla.scilab.org/16629): `interp1`'s documentation did not tell the spline edges conditions ; extrapolation modes were poorly explained. ; the description of the result's size was completely wrong ; x as an option was not documented. A wrong extrapolation value could silently return a wrong result. There was some dead code like `if varargin(5)==%nan`. A bugged error message yielded its own error. When x is implicit, the argument index in error messages could be wrong. `periodic` and `edgevalue` extrapolation modes were not available. `linear` extrapolation was not available for splines. When `xp` is an hypermatrix with `size(xp,1)==1`, the size of the result was irregular/wrong.
+* [#16631](https://bugzilla.scilab.org/16631): Scilab did not start with unsupported locale on macOS.
 * [#16644](https://bugzilla.scilab.org/16644): `input("message:")` yielded a wrong error message about `mprintf` in case of non-interpretable input.
 * [#16654](https://bugzilla.scilab.org/16654): `interp` was leaking memory.
 
index 448787f..ee8c855 100644 (file)
@@ -157,6 +157,7 @@ wchar_t *to_wide_string(const char *_UTFStr)
         iconv_close(cd_ISO8851_to_UTF16);
         if (iSize == (size_t)(-1))
         {
+            pOut = pOutSave;
             FREE(pOut);
             return NULL;
         }
index 587368c..37e40ef 100644 (file)
@@ -137,8 +137,13 @@ BOOL setlanguage(const wchar_t *lang)
                 if (pstRet == NULL)
                 {
                     fprintf(stderr,
-                            "Warning: Localization issue. Failed to change the LC_CTYPE locale category. Does not support the locale '%ls' %ls %s.\nDid you install the system locales?\n",
-                            lang, ret, setlocale(LC_CTYPE, NULL));
+                            "Warning: Localization issue. Failed to change the LC_CTYPE locale category. Does not support the locale '%s' %ls %s.\nDid you install the system locales?\n",
+                            pstLang, ret, setlocale(LC_CTYPE, NULL));
+                            newlang = (char*)MALLOC(12);
+#ifdef __APPLE__
+                    sprintf(newlang, "%s.UTF-8", wide_string_to_UTF8(SCILABDEFAULTLANGUAGE));
+                    pstRet = setlocale(LC_CTYPE, newlang);
+#endif
                 }
 
                 //for gettext