summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorblythe%netscape.com <devnull@localhost>2002-02-08 22:33:59 +0000
committerblythe%netscape.com <devnull@localhost>2002-02-08 22:33:59 +0000
commit7f6cde496dcf591566c7e039dee430ddadca9e62 (patch)
treee18b7d74a117b86ed87559cd7aa46f12a7d7a7a3
parentaeac384c51f5ae369dfbb2ddda7f874895e21715 (diff)
downloadnspr-hg-7f6cde496dcf591566c7e039dee430ddadca9e62.tar.gz
CreateSemaphoreA handled
-rw-r--r--pr/include/md/_win32_unicode.h9
-rw-r--r--pr/src/md/windows/w32ipcsem.c4
-rw-r--r--pr/src/md/windows/w32unicode.c56
3 files changed, 60 insertions, 9 deletions
diff --git a/pr/include/md/_win32_unicode.h b/pr/include/md/_win32_unicode.h
index 4d56f69d..7bf9396c 100644
--- a/pr/include/md/_win32_unicode.h
+++ b/pr/include/md/_win32_unicode.h
@@ -113,6 +113,15 @@ _MD_RemoveDirectoryA(
LPCSTR lpPathName
);
+HANDLE
+WINAPI
+_MD_CreateSemaphoreA(
+ IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
+ IN LONG lInitialCount,
+ IN LONG lMaximumCount,
+ IN LPCSTR lpName
+ );
+
#endif /* WINCE */
#endif /* nspr_win32_unicode_h___ */
diff --git a/pr/src/md/windows/w32ipcsem.c b/pr/src/md/windows/w32ipcsem.c
index 521cb732..1e9eade6 100644
--- a/pr/src/md/windows/w32ipcsem.c
+++ b/pr/src/md/windows/w32ipcsem.c
@@ -147,7 +147,7 @@ PRSem *_PR_MD_OPEN_SEMAPHORE(
#if !defined(WINCE)
sem->sem = CreateSemaphore(lpSA, value, 0x7fffffff, osname);
#else
- sem->sem = CreateSemaphoreA(lpSA, value, 0x7fffffff, osname);
+ sem->sem = _MD_CreateSemaphoreA(lpSA, value, 0x7fffffff, osname);
#endif
if (lpSA != NULL) {
_PR_NT_FreeSecurityDescriptorACL(pSD, pACL);
@@ -189,7 +189,7 @@ PRSem *_PR_MD_OPEN_SEMAPHORE(
* We create the semaphore. If it existed previouisly, the
* state is signaled by GetLastError....
*/
- sem->sem = CreateSemaphoreA(lpSA, 0, 0x7fffffff, osname);
+ sem->sem = _MD_CreateSemaphoreA(lpSA, 0, 0x7fffffff, osname);
if(NULL != sem->sem)
{
DWORD lastErr = GetLastError();
diff --git a/pr/src/md/windows/w32unicode.c b/pr/src/md/windows/w32unicode.c
index 85f47241..cef4021c 100644
--- a/pr/src/md/windows/w32unicode.c
+++ b/pr/src/md/windows/w32unicode.c
@@ -138,13 +138,17 @@ OutputDebugStringA(
LPCSTR lpOutputString
)
{
- LPWSTR str = NULL;
+ LPWSTR wideStr = NULL;
- str = _PR_MD_MALLOC_A2W(lpOutputString);
- if(NULL != str)
+ wideStr = _PR_MD_MALLOC_A2W(lpOutputString);
+ if(NULL == lpOutputString || NULL != wideStr)
{
- OutputDebugStringW(str);
- PR_Free(str);
+ OutputDebugStringW(wideStr);
+
+ if(NULL != wideStr)
+ {
+ PR_Free(wideStr);
+ }
}
else
{
@@ -194,7 +198,7 @@ CreateProcessA (
LPWSTR wideImageName = NULL;
wideImageName = _PR_MD_MALLOC_A2W(pszImageName);
- if(NULL != wideImageName)
+ if(NULL == pszImageName || NULL != wideImageName)
{
LPWSTR wideCmdLine = NULL;
@@ -227,7 +231,10 @@ CreateProcessA (
PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);
}
- PR_Free(wideImageName);
+ if(NULL != wideImageName)
+ {
+ PR_Free(wideImageName);
+ }
}
else
{
@@ -406,4 +413,39 @@ _MD_RemoveDirectoryA(
return retval;
}
+HANDLE
+WINAPI
+_MD_CreateSemaphoreA(
+ IN LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
+ IN LONG lInitialCount,
+ IN LONG lMaximumCount,
+ IN LPCSTR lpName
+ )
+{
+ HANDLE retval = NULL;
+ LPWSTR wideStr = NULL;
+
+ wideStr = _PR_MD_MALLOC_A2W(lpName);
+ if(NULL == lpName || NULL != wideStr)
+ {
+ retval = CreateSemaphoreW(
+ lpSemaphoreAttributes,
+ lInitialCount,
+ lMaximumCount,
+ wideStr
+ );
+
+ if(NULL != wideStr)
+ {
+ PR_Free(wideStr);
+ }
+ }
+ else
+ {
+ PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);
+ }
+
+ return retval;
+}
+
#endif /* WINCE */ \ No newline at end of file