From: Stefan Pintilie Date: Fri, 25 Feb 2022 14:48:58 +0000 (-0600) Subject: [libcxx] Fix the type in __estimate_column_width X-Git-Tag: upstream/15.0.7~15280 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9f5f08476e8979046ad3a13865d984c428eae442;p=platform%2Fupstream%2Fllvm.git [libcxx] Fix the type in __estimate_column_width 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 --- diff --git a/libcxx/include/__format/parser_std_format_spec.h b/libcxx/include/__format/parser_std_format_spec.h index 57f4e46..f92a9fa 100644 --- a/libcxx/include/__format/parser_std_format_spec.h +++ b/libcxx/include/__format/parser_std_format_spec.h @@ -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) diff --git a/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp b/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp index 2f92ae8..6da1574 100644 --- a/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp +++ b/libcxx/test/libcxx/utilities/format/format.string/format.string.std/std_format_spec_string_unicode.pass.cpp @@ -9,9 +9,6 @@ // UNSUPPORTED: libcpp-no-concepts // UNSUPPORTED: libcpp-has-no-incomplete-format -// Fails for 32-bit builds on AIX. -// UNSUPPORTED: LIBCXX-AIX-FIXME - // UTF-32 doesn't work properly // XFAIL: windows