# HG changeset patch # User Sebastien Decugis # Date 1216286589 -32400 # Node ID 55d9e3443e591bee867fd91289bfca629e1f603e # Parent 0077037f269f9edeed5509cd8171f5ac12ee9f78 Fix in meq_del. The parameter is ** not *. diff -r 0077037f269f -r 55d9e3443e59 waaad/queues.c --- 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; } diff -r 0077037f269f -r 55d9e3443e59 waaad/tests/testmeq.c --- 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 */