From d5832354e8abc129ce4f3c24614dc2cbf94cc5e7 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Tue, 18 Aug 2015 11:09:35 -0400 Subject: [PATCH] iocInit: Don't free LSET until scan tasks have stopped --- src/ioc/misc/iocInit.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/ioc/misc/iocInit.c b/src/ioc/misc/iocInit.c index 3bede8547..cce2c7938 100644 --- a/src/ioc/misc/iocInit.c +++ b/src/ioc/misc/iocInit.c @@ -637,7 +637,6 @@ static void doCloseLinks(dbRecordType *pdbRecordType, dbCommon *precord, free(plink->value.pv_link.pvt); plink->type = PV_LINK; } - dbFreeLinkContents(plink); } if (precord->dset && @@ -660,6 +659,16 @@ static void doCloseLinks(dbRecordType *pdbRecordType, dbCommon *precord, static void doFreeRecord(dbRecordType *pdbRecordType, dbCommon *precord, void *user) { + int j; + + for (j = 0; j < pdbRecordType->no_links; j++) { + dbFldDes *pdbFldDes = + pdbRecordType->papFldDes[pdbRecordType->link_ind[j]]; + DBLINK *plink = (DBLINK *)((char *)precord + pdbFldDes->offset); + + dbFreeLinkContents(plink); + } + epicsMutexDestroy(precord->mlok); }