summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog14
-rw-r--r--winsup/cygwin/exceptions.cc4
-rw-r--r--winsup/cygwin/shared.cc12
-rw-r--r--winsup/cygwin/shared_info.h2
-rw-r--r--winsup/cygwin/sigproc.cc5
-rw-r--r--winsup/cygwin/syscalls.cc12
6 files changed, 35 insertions, 14 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 56941e73a..593508564 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,7 +1,19 @@
+2003-05-21 Corinna Vinschen <corinna@vinschen.de>
+
+ * shared_info.h: Match shared_name declaration with below change.
+ * shared.cc (shared_name): Use incoming char * parameter instead of
+ local static buffer.
+ (open_shared): Accomodate new calling convention for shared_name.
+ * exceptions.cc (events_init): Ditto.
+ * sigproc.cc (getsem): Ditto.
+ * syscalls.cc (login): Ditto.
+ (logout): Ditto.
+ (pututline): Ditto.
+
2003-05-20 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (secret_event_name): Return void. Use incoming
- char *parameter instead of local static buffer.
+ char * parameter instead of local static buffer.
(fhandler_socket::create_secret_event): Accomodate new calling
convention for secret_event_name.
(fhandler_socket::close_secret_event): Ditto.
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index ec4b7f4c9..482745e89 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -1134,11 +1134,13 @@ void
events_init (void)
{
char *name;
+ char mutex_name[MAX_PATH];
/* title_mutex protects modification of console title. It's necessary
while finding console window handle */
if (!(title_mutex = CreateMutex (&sec_all_nih, FALSE,
- name = shared_name ("title_mutex", 0))))
+ name = shared_name (mutex_name,
+ "title_mutex", 0))))
api_fatal ("can't create title mutex '%s', %E", name);
ProtectHandle (title_mutex);
diff --git a/winsup/cygwin/shared.cc b/winsup/cygwin/shared.cc
index 2a6ae9087..c8c764c74 100644
--- a/winsup/cygwin/shared.cc
+++ b/winsup/cygwin/shared.cc
@@ -33,17 +33,16 @@ mount_info NO_COPY *mount_table;
HANDLE NO_COPY cygwin_mount_h;
char * __stdcall
-shared_name (const char *str, int num)
+shared_name (char *ret_buf, const char *str, int num)
{
- static NO_COPY char buf[MAX_PATH] = {0};
extern bool _cygwin_testing;
- __small_sprintf (buf, "%s%s.%s.%d",
+ __small_sprintf (ret_buf, "%s%s.%s.%d",
wincap.has_terminal_services () ? "Global\\" : "",
cygwin_version.shared_id, str, num);
if (_cygwin_testing)
- strcat (buf, cygwin_version.dll_build_date);
- return buf;
+ strcat (ret_buf, cygwin_version.dll_build_date);
+ return ret_buf;
}
#define page_const (65535)
@@ -88,11 +87,12 @@ open_shared (const char *name, int n, HANDLE &shared_h, DWORD size, shared_locat
if (!shared_h)
{
char *mapname;
+ char map_buf[MAX_PATH];
if (!name)
mapname = NULL;
else
{
- mapname = shared_name (name, n);
+ mapname = shared_name (map_buf, name, n);
shared_h = OpenFileMappingA (FILE_MAP_READ | FILE_MAP_WRITE,
TRUE, mapname);
}
diff --git a/winsup/cygwin/shared_info.h b/winsup/cygwin/shared_info.h
index 0156763e6..c9cf6a359 100644
--- a/winsup/cygwin/shared_info.h
+++ b/winsup/cygwin/shared_info.h
@@ -186,5 +186,5 @@ struct console_state
};
#endif
-char *__stdcall shared_name (const char *, int);
+char *__stdcall shared_name (char *, const char *, int);
void *__stdcall open_shared (const char *name, int n, HANDLE &shared_h, DWORD size, shared_locations);
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc
index 124b8d059..5d3b2e220 100644
--- a/winsup/cygwin/sigproc.cc
+++ b/winsup/cygwin/sigproc.cc
@@ -883,6 +883,7 @@ static HANDLE __stdcall
getsem (_pinfo *p, const char *str, int init, int max)
{
HANDLE h;
+ char sem_name[MAX_PATH];
if (p != NULL)
{
@@ -906,7 +907,7 @@ getsem (_pinfo *p, const char *str, int init, int max)
DWORD winpid = GetCurrentProcessId ();
h = CreateSemaphore (sec_user_nih (sa_buf), init, max,
- str = shared_name (str, winpid));
+ str = shared_name (sem_name, str, winpid));
p = myself;
if (!h)
{
@@ -917,7 +918,7 @@ getsem (_pinfo *p, const char *str, int init, int max)
else
{
h = OpenSemaphore (SEMAPHORE_ALL_ACCESS, FALSE,
- shared_name (str, p->dwProcessId));
+ shared_name (sem_name, str, p->dwProcessId));
if (!h)
{
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index f66363f7d..625e05957 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -2540,7 +2540,9 @@ login (struct utmp *ut)
pututline (ut);
endutent ();
/* Writing to wtmp must be atomic to prevent mixed up data. */
- HANDLE mutex = CreateMutex (NULL, FALSE, shared_name ("wtmp_mutex", 0));
+ char mutex_name[MAX_PATH];
+ HANDLE mutex = CreateMutex (NULL, FALSE,
+ shared_name (mutex_name, "wtmp_mutex", 0));
if (mutex)
while (WaitForSingleObject (mutex, INFINITE) == WAIT_ABANDONED)
;
@@ -2578,7 +2580,9 @@ logout (char *line)
memset (ut_buf.ut_user, 0, sizeof ut_buf.ut_user);
time (&ut_buf.ut_time);
/* Writing to wtmp must be atomic to prevent mixed up data. */
- HANDLE mutex = CreateMutex (NULL, FALSE, shared_name ("wtmp_mutex", 0));
+ char mutex_name[MAX_PATH];
+ HANDLE mutex = CreateMutex (NULL, FALSE,
+ shared_name (mutex_name, "wtmp_mutex", 0));
if (mutex)
while (WaitForSingleObject (mutex, INFINITE) == WAIT_ABANDONED)
;
@@ -2747,7 +2751,9 @@ pututline (struct utmp *ut)
return;
/* Read/write to utmp must be atomic to prevent overriding data
by concurrent processes. */
- HANDLE mutex = CreateMutex (NULL, FALSE, shared_name ("utmp_mutex", 0));
+ char mutex_name[MAX_PATH];
+ HANDLE mutex = CreateMutex (NULL, FALSE,
+ shared_name (mutex_name, "utmp_mutex", 0));
if (mutex)
while (WaitForSingleObject (mutex, INFINITE) == WAIT_ABANDONED)
;