Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorConrad Scott <conrad.scott@dsl.pipex.com>2002-09-21 13:52:33 +0400
committerConrad Scott <conrad.scott@dsl.pipex.com>2002-09-21 13:52:33 +0400
commit6b37d1f4647fd95c65c8664972f3b0ec2284bf8f (patch)
treee3aaea3c5996da5607eb0d15b990e550338c610a
parentec01247bc632cfdeec4b9e6a44dab8d86bc8ba0f (diff)
* safe_memory.h (safe_delete): Make a templated function.
* cygserver.cc (~server_request): Update use of safe_delete. (main): Ditto. * cygserver_client.cc (client_request::handle_request): Ditto. (client_request::make_request): Ditto. * cygserver_process.cc (~process_cleanup): Ditto. (process::remove): Ditto. (process::cleanup): Ditto. (process_cache::process): Ditto. * cygserver_shm.cc (server_shmmgr::segment_t::detach): Ditto. (server_shmmgr::delete_segment): Ditto. * shm.cc (client_shmmgr::shmdt): Ditto. * threaded_queue.cc (~threaded_queue): Ditto. (threaded_queue::worker_loop): Ditto.
-rw-r--r--winsup/cygserver/threaded_queue.cc4
-rw-r--r--winsup/cygwin/ChangeLog17
-rwxr-xr-xwinsup/cygwin/cygserver.cc4
-rwxr-xr-xwinsup/cygwin/cygserver_client.cc6
-rwxr-xr-xwinsup/cygwin/cygserver_process.cc8
-rwxr-xr-xwinsup/cygwin/cygserver_shm.cc4
-rw-r--r--winsup/cygwin/safe_memory.h12
-rw-r--r--winsup/cygwin/shm.cc2
-rwxr-xr-xwinsup/cygwin/threaded_queue.cc4
9 files changed, 41 insertions, 20 deletions
diff --git a/winsup/cygserver/threaded_queue.cc b/winsup/cygserver/threaded_queue.cc
index ced597865..ba0fe4178 100644
--- a/winsup/cygserver/threaded_queue.cc
+++ b/winsup/cygserver/threaded_queue.cc
@@ -73,7 +73,7 @@ threaded_queue::~threaded_queue ()
{
queue_request *const ptr = reqptr;
reqptr = reqptr->_next;
- safe_delete (queue_request, ptr);
+ safe_delete (ptr);
}
DeleteCriticalSection (&_queue_lock);
@@ -267,7 +267,7 @@ threaded_queue::worker_loop ()
assert (reqptr);
reqptr->process ();
- safe_delete (queue_request, reqptr);
+ safe_delete (reqptr);
}
}
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 66dc9c07f..e449240f8 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,20 @@
+2002-09-21 Conrad Scott <conrad.scott@dsl.pipex.com>
+
+ * safe_memory.h (safe_delete): Make a templated function.
+ * cygserver.cc (~server_request): Update use of safe_delete.
+ (main): Ditto.
+ * cygserver_client.cc (client_request::handle_request): Ditto.
+ (client_request::make_request): Ditto.
+ * cygserver_process.cc (~process_cleanup): Ditto.
+ (process::remove): Ditto.
+ (process::cleanup): Ditto.
+ (process_cache::process): Ditto.
+ * cygserver_shm.cc (server_shmmgr::segment_t::detach): Ditto.
+ (server_shmmgr::delete_segment): Ditto.
+ * shm.cc (client_shmmgr::shmdt): Ditto.
+ * threaded_queue.cc (~threaded_queue): Ditto.
+ (threaded_queue::worker_loop): Ditto.
+
2002-09-21 Robert Collins <rbtcollins@hotmail.com>
* pthread.cc: Use class::call for converted pthread and semaphore
diff --git a/winsup/cygwin/cygserver.cc b/winsup/cygwin/cygserver.cc
index b3472a10d..c48c5c662 100755
--- a/winsup/cygwin/cygserver.cc
+++ b/winsup/cygwin/cygserver.cc
@@ -402,7 +402,7 @@ public:
virtual ~server_request()
{
- safe_delete (transport_layer_base, _conn);
+ safe_delete (_conn);
}
virtual void process ()
@@ -764,7 +764,7 @@ main (const int argc, char *argv[])
printf ("\nShutdown request received - new requests will be denied\n");
request_queue.stop ();
printf ("All pending requests processed\n");
- safe_delete (transport_layer_base, transport);
+ safe_delete (transport);
printf ("No longer accepting requests - cygwin will operate in daemonless mode\n");
cache.stop ();
printf ("All outstanding process-cache activities completed\n");
diff --git a/winsup/cygwin/cygserver_client.cc b/winsup/cygwin/cygserver_client.cc
index 9278aab42..3372fcaeb 100755
--- a/winsup/cygwin/cygserver_client.cc
+++ b/winsup/cygwin/cygserver_client.cc
@@ -303,7 +303,7 @@ client_request::handle_request (transport_layer_base *const conn,
req->msglen (header.msglen);
req->handle (conn, cache);
- safe_delete (client_request, req);
+ safe_delete (req);
#ifndef DEBUGGING
printf ("."); // A little noise when we're being quiet.
@@ -356,7 +356,7 @@ client_request::make_request ()
error_code (errno);
else
error_code (ENOSYS);
- safe_delete (transport_layer_base, transport);
+ safe_delete (transport);
return -1;
}
@@ -364,7 +364,7 @@ client_request::make_request ()
send (transport);
- safe_delete (transport_layer_base, transport);
+ safe_delete (transport);
return 0;
}
diff --git a/winsup/cygwin/cygserver_process.cc b/winsup/cygwin/cygserver_process.cc
index 99eb35aca..88115cfd4 100755
--- a/winsup/cygwin/cygserver_process.cc
+++ b/winsup/cygwin/cygserver_process.cc
@@ -30,7 +30,7 @@ details. */
process_cleanup::~process_cleanup ()
{
- safe_delete (process, _process);
+ safe_delete (_process);
}
void
@@ -140,7 +140,7 @@ process::remove (const cleanup_routine *const entry)
else
_routines_head = ptr->_next;
- safe_delete (cleanup_routine, ptr);
+ safe_delete (ptr);
res = true;
break;
}
@@ -171,7 +171,7 @@ process::cleanup ()
cleanup_routine *const ptr = entry;
entry = entry->_next;
ptr->cleanup (this);
- safe_delete (cleanup_routine, ptr);
+ safe_delete (ptr);
}
}
@@ -255,7 +255,7 @@ process_cache::process (const pid_t cygpid, const DWORD winpid)
if (!entry->is_active ())
{
LeaveCriticalSection (&_cache_write_access);
- safe_delete (process, entry);
+ safe_delete (entry);
set_errno (ESRCH);
return NULL;
}
diff --git a/winsup/cygwin/cygserver_shm.cc b/winsup/cygwin/cygserver_shm.cc
index 3a36ff45c..615da2c1e 100755
--- a/winsup/cygwin/cygserver_shm.cc
+++ b/winsup/cygwin/cygserver_shm.cc
@@ -347,7 +347,7 @@ server_shmmgr::segment_t::detach (class process *const client)
else
_attach_head = attptr->_next;
- safe_delete (attach_t, attptr);
+ safe_delete (attptr);
}
assert (_ds.shm_nattch > 0);
@@ -856,7 +856,7 @@ server_shmmgr::delete_segment (segment_t *const segptr)
_shm_ids -= 1;
_shm_tot -= segptr->_ds.shm_segsz;
- safe_delete (segment_t, segptr);
+ safe_delete (segptr);
}
/*---------------------------------------------------------------------------*
diff --git a/winsup/cygwin/safe_memory.h b/winsup/cygwin/safe_memory.h
index 89d724a61..b5f3d95d6 100644
--- a/winsup/cygwin/safe_memory.h
+++ b/winsup/cygwin/safe_memory.h
@@ -40,10 +40,14 @@ inline void *operator new (size_t, void *__p) throw () { return __p; }
#endif /* !NEW_MACRO_VARARGS */
-#define safe_delete(T, O) \
-{ \
- (O)->~T (); \
- free (O); \
+template <typename T> void
+safe_delete (T *const object)
+{
+ if (object)
+ {
+ object->~T ();
+ free (object);
+ }
}
#endif /* __SAFE_MEMORY_H__ */
diff --git a/winsup/cygwin/shm.cc b/winsup/cygwin/shm.cc
index 9ca49d5ba..5b2b7188a 100644
--- a/winsup/cygwin/shm.cc
+++ b/winsup/cygwin/shm.cc
@@ -359,7 +359,7 @@ client_shmmgr::shmdt (const void *const shmaddr)
segptr->shmid, segptr->hFileMap,
strerror (request.error_code ()));
- safe_delete (segment_t, segptr);
+ safe_delete (segptr);
syscall_printf ("0 = shmdt (shmaddr = %p)", shmaddr);
diff --git a/winsup/cygwin/threaded_queue.cc b/winsup/cygwin/threaded_queue.cc
index ced597865..ba0fe4178 100755
--- a/winsup/cygwin/threaded_queue.cc
+++ b/winsup/cygwin/threaded_queue.cc
@@ -73,7 +73,7 @@ threaded_queue::~threaded_queue ()
{
queue_request *const ptr = reqptr;
reqptr = reqptr->_next;
- safe_delete (queue_request, ptr);
+ safe_delete (ptr);
}
DeleteCriticalSection (&_queue_lock);
@@ -267,7 +267,7 @@ threaded_queue::worker_loop ()
assert (reqptr);
reqptr->process ();
- safe_delete (queue_request, reqptr);
+ safe_delete (reqptr);
}
}