From d6fe343a88bbd6ce5205ecf6ae82239a19e90573 Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Wed, 7 Dec 1994 00:31:59 +0000 Subject: [PATCH] sync group leak fix --- src/ca/syncgrp.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/ca/syncgrp.c b/src/ca/syncgrp.c index e7570a8fa..573d7d3b2 100644 --- a/src/ca/syncgrp.c +++ b/src/ca/syncgrp.c @@ -61,6 +61,7 @@ void ca_sg_init(void) void ca_sg_shutdown(struct ca_static *ca_temp) { CASG *pcasg; + CASG *pnextcasg; int status; /* @@ -69,16 +70,25 @@ void ca_sg_shutdown(struct ca_static *ca_temp) LOCK; pcasg = (CASG *) ellFirst (&ca_temp->activeCASG); while (pcasg) { - status = bucketRemoveItemUnsignedId ( - ca_temp->ca_pSlowBucket, &pcasg->id); - assert (status == BUCKET_SUCCESS); - pcasg = (CASG *) ellNext(&pcasg->node); + pnextcasg = (CASG *) ellNext (&pcasg->node); + status = ca_sg_delete (pcasg->id); + assert (status==ECA_NORMAL); + pcasg = pnextcasg; } - ellFree(&ca_temp->activeCASG); - ellFree(&ca_temp->freeCASG); + assert (ellCount(&ca_temp->activeCASG)==0); + + /* + * per sync group + */ + ellFree (&ca_temp->freeCASG); + + /* + * per sync group op + */ + ellFree (&ca_temp->activeCASGOP); + ellFree (&ca_temp->freeCASGOP); + UNLOCK; - ellInit(&ca_temp->activeCASGOP); - ellInit(&ca_temp->freeCASGOP); return; }