diff --git a/modules/juce_core/native/juce_posix_NamedPipe.cpp b/modules/juce_core/native/juce_posix_NamedPipe.cpp index 0e6e678324..91a2cb2368 100644 --- a/modules/juce_core/native/juce_posix_NamedPipe.cpp +++ b/modules/juce_core/native/juce_posix_NamedPipe.cpp @@ -246,18 +246,23 @@ private: void NamedPipe::close() { - ScopedWriteLock sl (lock); - - if (pimpl != nullptr) { - pimpl->stopReadOperation = true; + const ScopedReadLock sl (lock); + + if (pimpl != nullptr) + { + pimpl->stopReadOperation = true; - const char buffer[] { 0 }; - const auto done = ::write (pimpl->pipeIn.get(), buffer, numElementsInArray (buffer)); - ignoreUnused (done); + const char buffer[] { 0 }; + const auto done = ::write (pimpl->pipeIn.get(), buffer, numElementsInArray (buffer)); + ignoreUnused (done); + } } - pimpl.reset(); + { + const ScopedWriteLock sl (lock); + pimpl.reset(); + } } bool NamedPipe::openInternal (const String& pipeName, bool createPipe, bool mustNotExist)