From 52b18d56a068b97d745be1ade02fc6b09780f73c Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Sun, 15 Jan 2023 10:02:43 -0800 Subject: [PATCH] dbCreateAlias fixup error handling --- modules/database/src/ioc/dbStatic/dbStaticLib.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/database/src/ioc/dbStatic/dbStaticLib.c b/modules/database/src/ioc/dbStatic/dbStaticLib.c index 6f171a5e4..81556e0b7 100644 --- a/modules/database/src/ioc/dbStatic/dbStaticLib.c +++ b/modules/database/src/ioc/dbStatic/dbStaticLib.c @@ -1652,6 +1652,7 @@ long dbCreateAlias(DBENTRY *pdbentry, const char *alias) dbRecordNode *pnewnode; DBENTRY tempEntry; PVDENTRY *ppvd; + long status; if (!precordType) return S_dbLib_recordTypeNotFound; @@ -1664,9 +1665,10 @@ long dbCreateAlias(DBENTRY *pdbentry, const char *alias) return S_dbLib_recNotFound; dbInitEntry(pdbentry->pdbbase, &tempEntry); - if (!dbFindRecord(&tempEntry, alias)) - return S_dbLib_recExists; + status = dbFindRecord(&tempEntry, alias); dbFinishEntry(&tempEntry); + if (!status) + return S_dbLib_recExists; pnewnode = dbCalloc(1, sizeof(dbRecordNode)); pnewnode->recordname = epicsStrDup(alias); @@ -1676,15 +1678,16 @@ long dbCreateAlias(DBENTRY *pdbentry, const char *alias) precnode->flags |= DBRN_FLAGS_HASALIAS; ellInit(&pnewnode->infoList); - ellAdd(&precordType->recList, &pnewnode->node); - precordType->no_aliases++; - ppvd = dbPvdAdd(pdbentry->pdbbase, precordType, pnewnode); if (!ppvd) { errMessage(-1, "dbCreateAlias: Add to PVD failed"); + free(pnewnode); return -1; } + ellAdd(&precordType->recList, &pnewnode->node); + precordType->no_aliases++; + return 0; }