From ccc0491b0fbdbf967d16f99ae9ea753c6e9378ab Mon Sep 17 00:00:00 2001 From: sletz Date: Wed, 13 Sep 2006 09:38:16 +0000 Subject: [PATCH] Correct pipe destruction bug in JackWinNamedPipe class. git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@1236 0c269be4-1314-0410-8aa9-9f06e86f4224 --- ChangeLog | 4 ++++ windows/JackWinNamedPipe.cpp | 22 ++++++++++++++++------ windows/JackWinNamedPipe.h | 2 +- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index d33a6249..25602b92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,10 @@ Jackdmp changes log --------------------------- +2006-09-13 Stephane Letz + + * Correct pipe destruction bug in JackWinNamedPipe class. + 2006-09-11 Stephane Letz * Handling of LoopBack driver only when really needed. diff --git a/windows/JackWinNamedPipe.cpp b/windows/JackWinNamedPipe.cpp index 243916ec..0f4d5047 100755 --- a/windows/JackWinNamedPipe.cpp +++ b/windows/JackWinNamedPipe.cpp @@ -99,8 +99,13 @@ int JackWinNamedPipeClient::Connect(const char* dir, const char* name, int which int JackWinNamedPipeClient::Close() { - CloseHandle(fNamedPipe); - return 0; + if (fNamedPipe != INVALID_HANDLE_VALUE) { + CloseHandle(fNamedPipe); + fNamedPipe = INVALID_HANDLE_VALUE; + return 0; + } else { + return -1; + } } void JackWinNamedPipeClient::SetReadTimeOut(long sec) @@ -296,10 +301,15 @@ JackWinNamedPipeClient* JackWinNamedPipeServer::AcceptClient() } int JackWinNamedPipeServer::Close() -{ - DisconnectNamedPipe(fNamedPipe); - CloseHandle(fNamedPipe); - return 0; +{ + if (fNamedPipe != INVALID_HANDLE_VALUE) { + DisconnectNamedPipe(fNamedPipe); + CloseHandle(fNamedPipe); + fNamedPipe = INVALID_HANDLE_VALUE; + return 0; + } else { + return -1; + } } // Server side diff --git a/windows/JackWinNamedPipe.h b/windows/JackWinNamedPipe.h index dd540c4b..f0a0a38e 100755 --- a/windows/JackWinNamedPipe.h +++ b/windows/JackWinNamedPipe.h @@ -38,7 +38,7 @@ class JackWinNamedPipe : public JackChannelTransaction public: - JackWinNamedPipe(): fNamedPipe(NULL) + JackWinNamedPipe(): fNamedPipe(INVALID_HANDLE_VALUE) {} JackWinNamedPipe(HANDLE pipe): fNamedPipe(pipe) {}