diff --git a/hipadaba.c b/hipadaba.c index 6fb253dd..181c2765 100644 --- a/hipadaba.c +++ b/hipadaba.c @@ -46,6 +46,9 @@ static void DeleteNodeData(pHdb node){ if(node->name != NULL){ free(node->name); } + if(node->path != NULL){ + free(node->path); + } ReleaseHdbValue(&node->value); node->magic = 000000; @@ -697,6 +700,7 @@ char *GetHipadabaPath(pHdb node){ strcat(pPtr,"/"); strcat(pPtr,nodeStack[i]->name); } + node->path = pPtr; return pPtr; } /*==================== Callback Functions ==================================*/ diff --git a/hipadaba.h b/hipadaba.h index 885d4280..944efa81 100644 --- a/hipadaba.h +++ b/hipadaba.h @@ -71,6 +71,7 @@ typedef struct __hipadaba { struct __hdbcallback *readCallbacks; struct __hdbcallback *treeChangeCallbacks; char *name; + char *path; hdbValue value; int protected; pStringDict properties; diff --git a/sicshipadaba.c b/sicshipadaba.c index fa88f53f..2fcba9d8 100644 --- a/sicshipadaba.c +++ b/sicshipadaba.c @@ -112,7 +112,8 @@ static int SICSDriveCallback(void *userData, void *callData, pHdb node, pCon = (SConnection *)callData; dum = (pDummy)userData; assert(pCon != NULL && dum != NULL); - return StartDevice(pServ->pExecutor,node->name,dum->pDescriptor, + GetHipadabaPath(node); + return StartDevice(pServ->pExecutor,node->path,dum->pDescriptor, userData, pCon, (float)v.v.doubleValue); } /*---------------------------------------------------------------------------------------*/ @@ -870,6 +871,9 @@ static void SICSDeleteNodeData(pHdb node){ if(node->name != NULL){ free(node->name); } + if(node->path != NULL){ + free(node->path); + } ReleaseHdbValue(&node->value); node->magic = 000000;