[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
================
@@ -521,6 +521,31 @@ inline _LIBCPP_HIDE_FROM_ABI void ios_base::exceptions(iostate __iostate) {
clear(__rdstate_);
}
+template <class _Traits>
+// Attribute 'packed' is used to keep the layout compatible with the previous
+// definition of the '__fill_' and '_set_' pair in basic_ios on AIX & z/OS.
+struct _LIBCPP_PACKED _FillHelper {
+ _LIBCPP_HIDE_FROM_ABI void __init() { __set_ = false; }
+ _LIBCPP_HIDE_FROM_ABI _FillHelper& operator=(typename _Traits::int_type __x) { __set_ = true; __fill_val_ = __x; return *this; }
+ _LIBCPP_HIDE_FROM_ABI bool __is_set() const { return __set_; }
+ _LIBCPP_HIDE_FROM_ABI typename _Traits::int_type __fill() const { return __fill_val_; }
----------------
ldionne wrote:
```suggestion
_LIBCPP_HIDE_FROM_ABI typename _Traits::int_type __get() const { return __fill_val_; }
```
https://github.com/llvm/llvm-project/pull/89305
More information about the libcxx-commits
mailing list