Mercurial > hg > waaad
changeset 97:55d9e3443e59
Fix in meq_del. The parameter is ** not *.
author | Sebastien Decugis <sdecugis@nict.go.jp> |
---|---|
date | Thu, 17 Jul 2008 18:23:09 +0900 |
parents | 0077037f269f |
children | 7d3d175c3b8d |
files | waaad/queues.c waaad/tests/testmeq.c |
diffstat | 2 files changed, 18 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/waaad/queues.c Thu Jul 17 18:17:36 2008 +0900 +++ b/waaad/queues.c Thu Jul 17 18:23:09 2008 +0900 @@ -162,17 +162,17 @@ ret = meq_del(&g_meq_incoming); if (ret != 0) { - TRACE_DEBUG(INFO, "Failed to initialize a queue: %s", strerror(ret)); + TRACE_DEBUG(INFO, "Failed to delete a queue: %s", strerror(ret)); return ret; } ret = meq_del(&g_meq_outgoing); if (ret != 0) { - TRACE_DEBUG(INFO, "Failed to initialize a queue: %s", strerror(ret)); + TRACE_DEBUG(INFO, "Failed to delete a queue: %s", strerror(ret)); return ret; } ret = meq_del(&g_meq_local); if (ret != 0) { - TRACE_DEBUG(INFO, "Failed to initialize a queue: %s", strerror(ret)); + TRACE_DEBUG(INFO, "Failed to delete a queue: %s", strerror(ret)); return ret; } return 0; @@ -232,20 +232,20 @@ TRACE_ENTRY( "%p", queue ); - if ( ! CHECK_QUEUE( queue ) ) { + if ( ! CHECK_QUEUE( *queue ) ) { TRACE_DEBUG(INFO, "Invalid parameter"); return EINVAL; } - ret = pthread_mutex_lock( &_Q(queue)->mtx ); + ret = pthread_mutex_lock( &_Q(*queue)->mtx ); if (ret != 0) { TRACE_DEBUG(INFO, "pthread_mutex_lock failed: %s", strerror(ret)); return ret; } - if ((_Q(queue)->count != 0) || (_Q(queue)->thrs != 0)) { - TRACE_DEBUG(INFO, "The queue count is %d, thread count %d, cannot destroy", _Q(queue)->count, _Q(queue)->thrs); - ret = pthread_mutex_unlock( &_Q(queue)->mtx ); + if ((_Q(*queue)->count != 0) || (_Q(*queue)->thrs != 0)) { + TRACE_DEBUG(INFO, "The queue count is %d, thread count %d, cannot destroy", _Q(*queue)->count, _Q(*queue)->thrs); + ret = pthread_mutex_unlock( &_Q(*queue)->mtx ); if (ret != 0) { TRACE_DEBUG(INFO, "pthread_mutex_unlock failed (ignored): %s", strerror(ret)); } @@ -253,31 +253,32 @@ } /* sanity check */ - assert(LI_isempty(&_Q(queue)->list)); + assert(LI_isempty(&_Q(*queue)->list)); /* Ok, now invalidate the queue */ - _Q(queue)->eyec = 0xdead; + _Q(*queue)->eyec = 0xdead; /* And destroy it */ - ret = pthread_mutex_unlock( &_Q(queue)->mtx ); + ret = pthread_mutex_unlock( &_Q(*queue)->mtx ); if (ret != 0) { TRACE_DEBUG(INFO, "pthread_mutex_unlock failed: %s", strerror(ret)); return ret; } - ret = pthread_cond_destroy( &_Q(queue)->cond ); + ret = pthread_cond_destroy( &_Q(*queue)->cond ); if (ret != 0) { TRACE_DEBUG(INFO, "pthread_cond_destroy failed: %s", strerror(ret)); return ret; } - ret = pthread_mutex_destroy( &_Q(queue)->mtx ); + ret = pthread_mutex_destroy( &_Q(*queue)->mtx ); if (ret != 0) { TRACE_DEBUG(INFO, "pthread_mutex_destroy failed: %s", strerror(ret)); return ret; } - free(queue); + free(*queue); + *queue = NULL; return 0; }
--- a/waaad/tests/testmeq.c Thu Jul 17 18:17:36 2008 +0900 +++ b/waaad/tests/testmeq.c Thu Jul 17 18:23:09 2008 +0900 @@ -148,7 +148,7 @@ CHECK( 0, count); /* We're done for basic tests */ - CHECK( 0, meq_del(queue) ); + CHECK( 0, meq_del(&queue) ); } /* Test robustness, ensure no messages are lost */ @@ -219,7 +219,7 @@ CHECK( 0, count); /* Destroy this queue and the messages */ - CHECK( 0, meq_del(queue) ); + CHECK( 0, meq_del(&queue) ); for (i=0; i < NBR_MSG * NBR_THREADS * 2; i++) { CHECK( 0, msg_free( msgs[i], 1 ) ); } @@ -286,7 +286,7 @@ CHECK( 0, pthread_join( th, NULL ) ); /* Destroy the queue */ - CHECK( 0, meq_del(queue) ); + CHECK( 0, meq_del(&queue) ); } /* Delete the messages */