diff --git a/src/platform/tls_pointer_win.cpp b/src/platform/tls_pointer_win.cpp index f2c0212..5d150a0 100644 --- a/src/platform/tls_pointer_win.cpp +++ b/src/platform/tls_pointer_win.cpp @@ -76,15 +76,15 @@ key_t create(destructor_t destructor) { key_t key = static_cast(::TlsAlloc()); if (key == TLS_OUT_OF_INDEXES) return invalid_value; auto rec = tls_data::records(); - if (!rec) rec = tls_data::records(new tls_data::map_t); - if (!rec) return key; + if (rec == nullptr) rec = tls_data::records(new tls_data::map_t); + if (rec == nullptr) return key; rec->emplace(key, tls_data{ key, destructor }); return key; } void release(key_t key) { auto rec = tls_data::records(); - if (!rec) return; + if (rec == nullptr) return; rec->erase(key); ::TlsFree(static_cast(key)); } diff --git a/test/test_ipc.cpp b/test/test_ipc.cpp index 5009d34..c0a9988 100644 --- a/test/test_ipc.cpp +++ b/test/test_ipc.cpp @@ -188,12 +188,32 @@ void Unit::test_channel() { return cc; }; + std::vector const datas = { + "hello!", + "foo", + "bar", + "ISO/IEC", + "14882:2011", + "ISO/IEC 14882:2017 Information technology - Programming languages - C++", + "ISO/IEC 14882:2020", + "Modern C++ Design: Generic Programming and Design Patterns Applied" + }; + std::thread t1 {[&] { auto cc = wait_for_connected(1); + for (std::size_t i = 0; i < datas.size(); ++i) { + auto dd = cc.recv(); + QCOMPARE(dd.size(), std::strlen(datas[i]) + 1); + QVERIFY(std::memcmp(dd.data(), datas[i], dd.size()) == 0); + } }}; std::thread t2 {[&] { auto cc = wait_for_connected(2); + for (std::size_t i = 0; i < datas.size(); ++i) { + std::cout << "sending: " << datas[i] << std::endl; + cc.send(datas[i]); + } }}; t1.join();