diff options
author | scottc <scottc> | 2002-09-21 09:52:32 +0000 |
---|---|---|
committer | scottc <scottc> | 2002-09-21 09:52:32 +0000 |
commit | 02b19493d8929253752ffe9952155a264618cf1f (patch) | |
tree | 749be21e06bc66693f7a2b504e1e32a9cce02153 | |
parent | 0d3e7ab6accc2eabbef044c9e372e87147f9c940 (diff) | |
download | gdb-02b19493d8929253752ffe9952155a264618cf1f.tar.gz |
* 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.cc | 4 | ||||
-rw-r--r-- | winsup/cygwin/ChangeLog | 17 | ||||
-rwxr-xr-x | winsup/cygwin/cygserver.cc | 4 | ||||
-rwxr-xr-x | winsup/cygwin/cygserver_client.cc | 6 | ||||
-rwxr-xr-x | winsup/cygwin/cygserver_process.cc | 8 | ||||
-rwxr-xr-x | winsup/cygwin/cygserver_shm.cc | 4 | ||||
-rw-r--r-- | winsup/cygwin/safe_memory.h | 12 | ||||
-rw-r--r-- | winsup/cygwin/shm.cc | 2 | ||||
-rwxr-xr-x | winsup/cygwin/threaded_queue.cc | 4 |
9 files changed, 41 insertions, 20 deletions
diff --git a/winsup/cygserver/threaded_queue.cc b/winsup/cygserver/threaded_queue.cc index ced59786500..ba0fe417843 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 66dc9c07f84..e449240f81f 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 b3472a10d6a..c48c5c66229 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 9278aab4289..3372fcaebfa 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 99eb35acabb..88115cfd4dd 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 3a36ff45cb6..615da2c1ee9 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 89d724a6184..b5f3d95d6af 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 9ca49d5ba70..5b2b7188a13 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 ced59786500..ba0fe417843 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); } } |