diff options
author | Ed Schouten <ed@nuxi.nl> | 2015-06-24 08:44:38 +0000 |
---|---|---|
committer | Ed Schouten <ed@nuxi.nl> | 2015-06-24 08:44:38 +0000 |
commit | 323ade3e7080de24c659f714404592818a78ca76 (patch) | |
tree | 94951b3a1d061d412496d1caa8e511dd109f182a /include/cstdlib | |
parent | 4428584a8852fd498a0e242a41f2ed6bad575c43 (diff) | |
download | libcxx-323ade3e7080de24c659f714404592818a78ca76.tar.gz |
Make support for thread-unsafe C functions optional.
One of the aspects of CloudABI is that it aims to help you write code
that is thread-safe out of the box. This is very important if you want
to write libraries that are easy to reuse. For CloudABI we decided to
not provide the thread-unsafe functions. So far this is working out
pretty well, as thread-unsafety issues are detected really early on.
The following patch adds a knob to libc++,
_LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS, that can be set to disable
thread-unsafe functions that can easily be avoided in practice. The
following functions are not thread-safe:
- <clocale>: locale handles should be preferred over setlocale().
- <cstdlib>: mbrlen(), mbrtowc() and wcrtomb() should be preferred over
their non-restartable counterparts.
- <ctime>: asctime(), ctime(), gmtime() and localtime() are not
thread-safe. The first two are also deprecated by POSIX.
Differential Revision: http://reviews.llvm.org/D8703
Reviewed by: marshall
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@240527 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/cstdlib')
-rw-r--r-- | include/cstdlib | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/cstdlib b/include/cstdlib index 298040e3f..55e15c821 100644 --- a/include/cstdlib +++ b/include/cstdlib @@ -147,9 +147,11 @@ using ::ldiv; #undef lldiv using ::lldiv; #endif // _LIBCPP_HAS_NO_LONG_LONG +#ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS using ::mblen; using ::mbtowc; using ::wctomb; +#endif using ::mbstowcs; using ::wcstombs; #ifdef _LIBCPP_HAS_QUICK_EXIT |