#3086: Use POCO_IOS_INIT_HACK for Linux in combination with libc++

This commit is contained in:
Günter Obiltschnig 2021-04-12 20:15:30 +02:00
parent 8722e0e38d
commit b4d15d475a

View File

@ -55,11 +55,11 @@
// //
// In this scenario, std::ios::init() is called twice // In this scenario, std::ios::init() is called twice
// (the first time by the MyIOS constructor, the second // (the first time by the MyIOS constructor, the second
// time by the std::istream constructor), resulting in // time by the std::istream constructor), resulting in
// two locale objects being allocated, the pointer second // two locale objects being allocated, the pointer second
// one overwriting the pointer to the first one and thus // one overwriting the pointer to the first one and thus
// causing a memory leak. // causing a memory leak.
// //
// The workaround is to call init() only once for each // The workaround is to call init() only once for each
// stream object - by the istream, ostream or iostream // stream object - by the istream, ostream or iostream
// constructor, and not calling init() in ios-derived // constructor, and not calling init() in ios-derived
@ -77,6 +77,9 @@
# define POCO_IOS_INIT_HACK 1 # define POCO_IOS_INIT_HACK 1
// QNX with Dinkumware but not GNU C++ Library // QNX with Dinkumware but not GNU C++ Library
# elif defined(__QNX__) && !defined(__GLIBCPP__) # elif defined(__QNX__) && !defined(__GLIBCPP__)
# define POCO_IOS_INIT_HACK 1
// Linux with Clang libc++
# elif defined(__linux) && defined(_LIBCPP_VERSION)
# define POCO_IOS_INIT_HACK 1 # define POCO_IOS_INIT_HACK 1
# endif # endif
#endif #endif