This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
On 26 August 2012 00:02, Jonathan Wakely wrote:
> This fixes a stupid mistake I made where the functor and asynchronous
> result can go out of scope before the async thread is joined.
>
> The _Async_state_common destructor still needs to be exported from the
> library, which is what the macro hack is for.
>
> PR libstdc++/54297
> * include/std/future (~_Async_state_impl): Join thread before
> derived class members are destroyed.
> (~_Async_state_common): Only define non-trivial destructor when
> included from future.cc for ABI compatibility reasons.
> * src/c++11/future.cc (_GLIBCXX_ABI_COMPAT_ASYNC): Define.
> * testsuite/30_threads/async/54297.cc: New.
>
> Tested x86_64-linux, committed to trunk and 4.7
I realised the compatibility symbols should be in one of the files
used for that purpose, so this moves them to
src/c++11/compatibility-thread-c++0x.cc
PR libstdc++/54297
* src/c++11/future.cc (~_Async_state_common): Move to...
* src/c++11/compatibility-thread-c++0x.cc (~_Async_state_common):
Here.
(_GLIBCXX_ABI_COMPAT_ASYNC): Rename to _GLIBCXX_ASYNC_ABI_COMPAT.
* include/std/future (_GLIBCXX_ABI_COMPAT_ASYNC): Likewise.
Tested x86_64-linux, committed to trunk and 4.7
Attachment:
patch.txt
Description: Text document
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |