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

David Tenty via libcxx-commits libcxx-commits at lists.llvm.org
Mon Jun 10 13:34:54 PDT 2024


================
@@ -146,6 +146,12 @@ ABI Affecting Changes
   ``random_device`` could throw a ``system_error`` with this value. It now
   throws ``ENOMSG``.
 
+- 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.
+  Undefining macro ``_LIBCXX_IOS_USE_FILL_HELPER`` to keep the ABI verson 1 behavior if needed.
----------------
daltenty wrote:

I think you should leave this part off, this isn't intended to be a user configurable macro, so I wouldn't mention it in release notes:

```suggestion
```

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


More information about the libcxx-commits mailing list