changeset 27748:5fc630696dc7

Compare locale charset name in lower case (bug #57304). * input.cc (file_reader::get_input): Transform locale encoding name to lower case.
author Markus Mützel <markus.muetzel@gmx.de>
date Tue, 26 Nov 2019 20:28:28 +0100
parents 7ae72862b542
children b3ad1b9417c0
files libinterp/corefcn/input.cc
diffstat 1 files changed, 11 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/input.cc	Tue Nov 26 13:57:43 2019 +0100
+++ b/libinterp/corefcn/input.cc	Tue Nov 26 20:28:28 2019 +0100
@@ -31,6 +31,7 @@
 #include <cstring>
 #include <cassert>
 
+#include <algorithm>
 #include <iostream>
 #include <sstream>
 #include <string>
@@ -861,9 +862,16 @@
 
     std::string mfile_encoding = input_sys.mfile_encoding ();
 
-    std::string encoding
-      = (mfile_encoding.compare ("system") == 0
-         ? octave_locale_charset_wrapper () : mfile_encoding);
+    std::string encoding;
+    if (mfile_encoding.compare ("system") == 0)
+      {
+        encoding = octave_locale_charset_wrapper ();
+        // encoding identifiers should consist of ASCII only characters
+        std::transform (encoding.begin (), encoding.end (), encoding.begin (),
+                        ::tolower);
+      }
+    else
+      encoding = mfile_encoding;
 
     if (encoding.compare ("utf-8") == 0)
     {