I'm not sure how this line compiled at all with earlier standards on Linux (where char_type is wchar_t). How wchar_t was outputted into char stream?

It produced the integer value before C++20:
https://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt2

So, the patch attached here should work as in earlier standards.


Yuriy
diff --git a/src/mathed/MathParser.cpp b/src/mathed/MathParser.cpp
index dd43dd9eac..478e906308 100644
--- a/src/mathed/MathParser.cpp
+++ b/src/mathed/MathParser.cpp
@@ -370,9 +370,9 @@ ostream & operator<<(ostream & os, Token const & t)
                os << '\\' << to_utf8(cs);
        }
        else if (t.cat() == catLetter)
-               os << t.character();
+               os << static_cast<uint32_t>(t.character());
        else
-               os << '[' << t.character() << ',' << t.cat() << ']';
+               os << '[' << static_cast<uint32_t>(t.character()) << ',' << 
t.cat() << ']';
        return os;
 }
 
-- 
lyx-devel mailing list
lyx-devel@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-devel

Reply via email to