keep private copy of pvname

This commit is contained in:
Marty Kraimer
2001-06-21 18:07:25 +00:00
parent e684ff02eb
commit 3ac74dd5a8
2 changed files with 7 additions and 1 deletions

View File

@@ -95,11 +95,15 @@ void epicsShareAPI dbCaLinkInit(void)
void epicsShareAPI dbCaAddLink( struct link *plink)
{
caLink *pca;
char *pvname;
pca = (caLink*)dbCalloc(1,sizeof(caLink));
pca->lock = epicsMutexMustCreate();
epicsMutexMustLock(pca->lock);
pca->plink = plink;
pvname = plink->value.pv_link.pvname;
pca->pvname = dbCalloc(1,strlen(pvname) +1);
strcpy(pca->pvname,pvname);
plink->type = CA_LINK;
plink->value.pv_link.pvt = pca;
epicsMutexUnlock(pca->lock);
@@ -671,13 +675,14 @@ void dbCaTask()
free(pca->pgetString);
free(pca->pputString);
free(pca->pcaAttributes);
free(pca->pvname);
epicsMutexDestroy(pca->lock);
free(pca);
continue; /*No other link_action makes sense*/
}
if(link_action&CA_CONNECT) {
status = ca_search_and_connect(
pca->plink->value.pv_link.pvname,
pca->pvname,
&(pca->chid),
connectionCallback,(void *)pca);
if(status!=ECA_NORMAL) {

View File

@@ -47,6 +47,7 @@ typedef struct caLink
{
ELLNODE node;
struct link *plink;
char *pvname;
chid chid;
void *pgetNative;
void *pputNative;