osaf/tools/safimm/src/immutil.c  |  15 ++++++++-------
 samples/immsv/immutils/immutil.c |  15 ++++++++-------
 2 files changed, 16 insertions(+), 14 deletions(-)


When there are more CCBs in CcbUtilCcbData, the first call of 
ccbutil_deleteCcbData() free all object names from active CCBs.
The patch fix this problem, and release object names only for the certain CCB.

diff --git a/osaf/tools/safimm/src/immutil.c b/osaf/tools/safimm/src/immutil.c
--- a/osaf/tools/safimm/src/immutil.c
+++ b/osaf/tools/safimm/src/immutil.c
@@ -112,19 +112,20 @@ void ccbutil_deleteCcbData(struct CcbUti
        if (ccb == NULL)
                return;
        while (item != NULL) {
-               op = item->operationListHead;
-               while(op) {
-                       osaf_extended_name_free(&op->objectName);
-                       op = op->next;
-                       if(op == item->operationListTail)
-                               break;
-               }
                if (ccb->ccbId == item->ccbId) {
                        if (prev == NULL) {
                                ccbList = item->next;
                        } else {
                                prev->next = item->next;
                        }
+
+                       op = item->operationListHead;
+                       while(op) {
+                               osaf_extended_name_free(&op->objectName);
+                               op = op->next;
+                               if(op == item->operationListTail)
+                                       break;
+                       }
                }
                prev = item;
                item = item->next;
diff --git a/samples/immsv/immutils/immutil.c b/samples/immsv/immutils/immutil.c
--- a/samples/immsv/immutils/immutil.c
+++ b/samples/immsv/immutils/immutil.c
@@ -112,19 +112,20 @@ void ccbutil_deleteCcbData(struct CcbUti
        if (ccb == NULL)
                return;
        while (item != NULL) {
-               op = item->operationListHead;
-               while(op) {
-                       osaf_extended_name_free(&op->objectName);
-                       op = op->next;
-                       if(op == item->operationListTail)
-                               break;
-               }
                if (ccb->ccbId == item->ccbId) {
                        if (prev == NULL) {
                                ccbList = item->next;
                        } else {
                                prev->next = item->next;
                        }
+
+                       op = item->operationListHead;
+                       while(op) {
+                               osaf_extended_name_free(&op->objectName);
+                               op = op->next;
+                               if(op == item->operationListTail)
+                                       break;
+                       }
                }
                prev = item;
                item = item->next;

------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to