- modified DeleteCallbackChain interface
- fixed killNode message to be sent for every node killed
This commit is contained in:
15
hipadaba.c
15
hipadaba.c
@@ -64,10 +64,14 @@ pHdbMessage GetHdbKillNodeMessage(pHdbMessage toTest){
|
||||
return NULL;
|
||||
}
|
||||
/*================== internal functions ===================================*/
|
||||
void DeleteCallbackChain(pHdbCallback root){
|
||||
void DeleteCallbackChain(pHdb node){
|
||||
pHdbCallback current = NULL, thisEntry;
|
||||
hdbMessage killNodeMsg;
|
||||
|
||||
current = root;
|
||||
killNodeMsg.type = killNode;
|
||||
InvokeCallbackChain(node, &killNodeMsg);
|
||||
|
||||
current = node->callBackChain;
|
||||
while(current != NULL){
|
||||
if(current->killFunc != NULL){
|
||||
current->killFunc(current->userData);
|
||||
@@ -95,7 +99,8 @@ void DeleteNodeData(pHdb node){
|
||||
if(node == NULL){
|
||||
return;
|
||||
}
|
||||
DeleteCallbackChain(node->callBackChain);
|
||||
|
||||
DeleteCallbackChain(node);
|
||||
if(node->properties != NULL){
|
||||
DeleteStringDict(node->properties);
|
||||
}
|
||||
@@ -595,15 +600,11 @@ void AddHipadabaChild(pHdb parent, pHdb child, void *callData){
|
||||
/*--------------------------------------------------------------------------*/
|
||||
void DeleteHipadabaNode(pHdb node, void *callData){
|
||||
pHdb current = NULL, tmp = NULL;
|
||||
hdbMessage killNodeMsg;
|
||||
|
||||
if(node == NULL){
|
||||
return;
|
||||
}
|
||||
|
||||
killNodeMsg.type = killNode;
|
||||
InvokeCallbackChain(node, &killNodeMsg);
|
||||
|
||||
RemoveHdbNodeFromParent(node, callData);
|
||||
|
||||
DeleteNodeData(node);
|
||||
|
||||
Reference in New Issue
Block a user