[libcxx-commits] [libcxx] [openmp] [libc++] basic_ios<wchar_t> cannot store fill character WCHAR_MAX (PR #89305)

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Thu Jul 4 12:03:41 PDT 2024


================
@@ -91,6 +91,14 @@
 #  define _LIBCPP_ABI_USE_WRAP_ITER_IN_STD_STRING_VIEW
 // Dont' add an inline namespace for `std::filesystem`
 #    define _LIBCPP_ABI_NO_FILESYSTEM_INLINE_NAMESPACE
+// libcxx std::basic_ios uses WEOF to indicate that the fill value is
+// uninitialized. However, on platforms where the size of char_type is
+// equal to or greater than the size of int_type and char_type is unsigned,
+// std::char_traits<char_type>::eq_int_type() cannot distinguish between WEOF
+// and WCHAR_MAX. New helper class _FillHelper uses a boolean variable to indicate
+// whether the fill value has been initialized so that a fill value WEOF set
+// by the user won't be treated as indicating the fill value is uninitialized.
+#  define _LIBCXX_IOS_USE_FILL_HELPER
----------------
ldionne wrote:

I would change this to:

```suggestion
#  define _LIBCPP_ABI_IOS_ALLOW_ARBITRARY_FILL_VALUE
```

WDYT?

https://github.com/llvm/llvm-project/pull/89305


More information about the libcxx-commits mailing list