libstdc++: Add assertion to std::promise::set_exception (LWG 2276)
authorJonathan Wakely <jwakely@redhat.com>
Wed, 14 Sep 2022 13:03:19 +0000 (14:03 +0100)
committerJonathan Wakely <jwakely@redhat.com>
Wed, 14 Sep 2022 18:17:36 +0000 (19:17 +0100)
commit0bc9aa9c3fcb1f3534575314038661ff111874dd
treee3262c029e392a5547e1904c68090c1d868e9066
parent8b1bc3051bd68ce193a8612fa3b1a65c0353b5b0
libstdc++: Add assertion to std::promise::set_exception (LWG 2276)

Without this assertion, the shared state is made ready, but contains
neither a value nor an exception. Add an assertion to prevent users from
accessing a value that was never initialized in the shared state.

libstdc++-v3/ChangeLog:

* include/std/future
(_State_baseV2::__setter(exception_ptr&, promise&)): Add
assertion for LWG 2276 precondition.
* testsuite/30_threads/promise/members/set_exception_neg.cc:
New test.
libstdc++-v3/include/std/future
libstdc++-v3/testsuite/30_threads/promise/members/set_exception_neg.cc [new file with mode: 0644]