summaryrefslogtreecommitdiff
path: root/sal
diff options
context:
space:
mode:
authorChris Sherlock <chris.sherlock79@gmail.com>2017-07-10 04:14:31 +1000
committerChris Sherlock <chris.sherlock79@gmail.com>2017-07-10 04:21:59 +1000
commit126da7c7774b49b044960d600e6b7f7d0d254c2d (patch)
tree64bd63a865c49a5fc093eeca7746c01b52586b04 /sal
parentd90293e7ec42eab0ca09f730371599adc466e349 (diff)
osl: CreateMutexW returns NULL on failure, not INVALID_HANDLE_VALUE
Fun fact - CreateFileW returns INVALID_HANDLE_VALUE (-1_) because the 16-bit functions OPenFile, _lopen and _lcreat return -1, so the Win32 API function CreateFile function also returned INVALID_HANDLE_VALUE to ease porting Win16 code to Win32. CreateMutexW, on the other hand, had no corresponding function in 16-bit Windows so it returns NULL on failure. cf. https://blogs.msdn.microsoft.com/oldnewthing/20040302-00/?p=40443 Raymond Chen is a gem who explains clearly why Win32 code is so idiosyncratic. Change-Id: I7888d46b048e5674ad776c8ac8070a1e57aa37a6
Diffstat (limited to 'sal')
-rw-r--r--sal/osl/w32/pipe.cxx26
1 files changed, 14 insertions, 12 deletions
diff --git a/sal/osl/w32/pipe.cxx b/sal/osl/w32/pipe.cxx
index 125e06ed40ba..29289f360833 100644
--- a/sal/osl/w32/pipe.cxx
+++ b/sal/osl/w32/pipe.cxx
@@ -108,7 +108,7 @@ oslPipe SAL_CALL osl_createPipe(rtl_uString *strPipeName, oslPipeOptions Options
rtl_uString* temp = nullptr;
oslPipe pPipe;
- PSECURITY_ATTRIBUTES pSecAttr = nullptr;
+ PSECURITY_ATTRIBUTES pSecAttr = nullptr;
rtl_uString_newFromAscii(&path, PIPESYSTEM);
rtl_uString_newFromAscii(&name, PIPEPREFIX);
@@ -150,7 +150,7 @@ oslPipe SAL_CALL osl_createPipe(rtl_uString *strPipeName, oslPipeOptions Options
rtl_uString_newConcat(&name, temp, strPipeName);
/* alloc memory */
- pPipe= osl_createPipeImpl();
+ pPipe = osl_createPipeImpl();
osl_atomic_increment(&(pPipe->m_Reference));
/* build system pipe name */
@@ -161,11 +161,11 @@ oslPipe SAL_CALL osl_createPipe(rtl_uString *strPipeName, oslPipeOptions Options
if (Options & osl_Pipe_CREATE)
{
- SetLastError( ERROR_SUCCESS );
+ SetLastError(ERROR_SUCCESS);
pPipe->m_NamedObject = CreateMutexW(nullptr, FALSE, SAL_W(name->buffer));
- if (pPipe->m_NamedObject != INVALID_HANDLE_VALUE && pPipe->m_NamedObject)
+ if (pPipe->m_NamedObject)
{
if (GetLastError() != ERROR_ALREADY_EXISTS)
{
@@ -199,7 +199,7 @@ oslPipe SAL_CALL osl_createPipe(rtl_uString *strPipeName, oslPipeOptions Options
}
else
{
- BOOL fPipeAvailable;
+ BOOL fPipeAvailable;
do
{
@@ -231,7 +231,7 @@ oslPipe SAL_CALL osl_createPipe(rtl_uString *strPipeName, oslPipeOptions Options
// Pipe instance maybe caught by another client -> try again
}
}
- } while ( fPipeAvailable );
+ } while (fPipeAvailable);
}
/* if we reach here something went wrong */
@@ -370,15 +370,17 @@ sal_Int32 SAL_CALL osl_receivePipe(oslPipe pPipe,
DWORD lastError = GetLastError();
if (lastError == ERROR_MORE_DATA)
+ {
nBytes = BytesToRead;
- else
- {
- if (lastError == ERROR_PIPE_NOT_CONNECTED)
+ }
+ else
+ {
+ if (lastError == ERROR_PIPE_NOT_CONNECTED)
nBytes = 0;
else
nBytes = (DWORD) -1;
- pPipe->m_Error = osl_Pipe_E_ConnectionAbort;
+ pPipe->m_Error = osl_Pipe_E_ConnectionAbort;
}
}
@@ -400,9 +402,9 @@ sal_Int32 SAL_CALL osl_sendPipe(oslPipe pPipe,
if (!WriteFile(pPipe->m_File, pBuffer, BytesToSend, &nBytes, &os) &&
((GetLastError() != ERROR_IO_PENDING) ||
- ! GetOverlappedResult(pPipe->m_File, &os, &nBytes, TRUE)))
+ !GetOverlappedResult(pPipe->m_File, &os, &nBytes, TRUE)))
{
- if (GetLastError() == ERROR_PIPE_NOT_CONNECTED)
+ if (GetLastError() == ERROR_PIPE_NOT_CONNECTED)
nBytes = 0;
else
nBytes = (DWORD) -1;