[libcxx] Fix the type in __estimate_column_width
authorStefan Pintilie <stefanp@ca.ibm.com>
Fri, 25 Feb 2022 14:48:58 +0000 (08:48 -0600)
committerStefan Pintilie <stefanp@ca.ibm.com>
Fri, 25 Feb 2022 15:04:58 +0000 (09:04 -0600)
It seems that we are using wchar_t in __estimate_column_width and assume that
it is a 32 bit type. However, on AIX 32 the size of wchar_t is only 16 bits.

Changed wchar_t to uint32_t since the variable is being passed to a function
that uses uint32_t anyway.

Reviewed By: hubert.reinterpretcast, daltenty, Mordante, #libc, Quuxplusone

Differential Revision: https://reviews.llvm.org/D119770

libcxx/include/__format/parser_std_format_spec.h
libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp

index 57f4e46..f92a9fa 100644 (file)
@@ -1271,7 +1271,7 @@ __estimate_column_width(const _CharT* __first, const _CharT* __last,
   size_t __result = 0;
 
   while (__first != __last) {
-    wchar_t __c = *__first;
+    uint32_t __c = *__first;
     __result += __column_width(__c);
 
     if (__result > __maximum)