From c6bcd1a10b216371f281db1cfeeb0f3eb1851b73 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Wed, 30 Aug 1995 21:31:43 +0000 Subject: [PATCH] Still new --- src/rec/recDynLink.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/rec/recDynLink.c b/src/rec/recDynLink.c index eafbc052e..6bdde03ee 100644 --- a/src/rec/recDynLink.c +++ b/src/rec/recDynLink.c @@ -119,16 +119,14 @@ long recDynLinkAddInput(recDynLink *precDynLink,char *pvname, if(options&rdlDBONLY && db_name_to_addr(pvname,&dbaddr))return(-1); if(!inpTaskId) recDynLinkStartInput(); - pdynLinkPvt = precDynLink->pdynLinkPvt; + if(precDynLink->pdynLinkPvt) recDynLinkClear(precDynLink); + pdynLinkPvt = (dynLinkPvt *)calloc(1,sizeof(dynLinkPvt)); if(!pdynLinkPvt) { - pdynLinkPvt = (dynLinkPvt *)calloc(1,sizeof(dynLinkPvt)); - if(!pdynLinkPvt) { printf("recDynLinkAddInput can't allocate storage"); taskSuspend(0); - } - FASTLOCKINIT(&pdynLinkPvt->lock); - precDynLink->pdynLinkPvt = pdynLinkPvt; } + FASTLOCKINIT(&pdynLinkPvt->lock); + precDynLink->pdynLinkPvt = pdynLinkPvt; pdynLinkPvt->pvname = pvname; pdynLinkPvt->dbrType = dbrType; pdynLinkPvt->searchCallback = searchCallback; @@ -154,16 +152,14 @@ long recDynLinkAddOutput(recDynLink *precDynLink,char *pvname, if(options&rdlDBONLY && db_name_to_addr(pvname,&dbaddr))return(-1); if(!outTaskId) recDynLinkStartOutput(); - pdynLinkPvt = precDynLink->pdynLinkPvt; + if(precDynLink->pdynLinkPvt) recDynLinkClear(precDynLink); + pdynLinkPvt = (dynLinkPvt *)calloc(1,sizeof(dynLinkPvt)); if(!pdynLinkPvt) { - pdynLinkPvt = (dynLinkPvt *)calloc(1,sizeof(dynLinkPvt)); - if(!pdynLinkPvt) { - printf("recDynLinkAddInput can't allocate storage"); + printf("recDynLinkAddOutput can't allocate storage"); taskSuspend(0); - } - FASTLOCKINIT(&pdynLinkPvt->lock); - precDynLink->pdynLinkPvt = pdynLinkPvt; } + FASTLOCKINIT(&pdynLinkPvt->lock); + precDynLink->pdynLinkPvt = pdynLinkPvt; pdynLinkPvt->pvname = pvname; pdynLinkPvt->dbrType = dbrType; pdynLinkPvt->searchCallback = searchCallback;