From 405f50533e9a5efd34abb28e0c1c2e52abfb3197 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Thu, 10 Sep 2015 09:56:50 -0500 Subject: [PATCH] Fix for linux-x86 --- src/ioc/dbStatic/dbStaticRun.c | 12 ++++++------ src/ioc/misc/iocInit.c | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/ioc/dbStatic/dbStaticRun.c b/src/ioc/dbStatic/dbStaticRun.c index bd53bb13e..f7fcbd5c5 100644 --- a/src/ioc/dbStatic/dbStaticRun.c +++ b/src/ioc/dbStatic/dbStaticRun.c @@ -210,20 +210,20 @@ long dbAllocRecord(DBENTRY *pdbentry,const char *precordName) precordName, pdbRecordType->name); return(S_dbLib_noRecSup); } - precnode->precord = dbCalloc(1,pdbRecordType->rec_size); - precord = precnode->precord; - precord->rdes = pdbRecordType; + precord = dbCalloc(1, pdbRecordType->rec_size); + precnode->precord = precord; pflddes = pdbRecordType->papFldDes[0]; if(!pflddes) { epicsPrintf("dbAllocRecord pflddes for NAME not found\n"); return(S_dbLib_flddesNotFound); } - if(strlen(precordName)>=pflddes->size) { + assert(pflddes->offset == 0); + assert(pflddes->size == sizeof(precord->name)); + if(strlen(precordName) >= sizeof(precord->name)) { epicsPrintf("dbAllocRecord: NAME(%s) too long\n",precordName); return(S_dbLib_nameLength); } - pfield = (char*)precord + pflddes->offset; - strcpy(pfield,precordName); + strcpy(precord->name, precordName); for(i=1; ino_fields; i++) { pflddes = pdbRecordType->papFldDes[i]; diff --git a/src/ioc/misc/iocInit.c b/src/ioc/misc/iocInit.c index 6ebe807ff..f7f259201 100644 --- a/src/ioc/misc/iocInit.c +++ b/src/ioc/misc/iocInit.c @@ -467,6 +467,7 @@ static void doInitRecord0(dbRecordType *pdbRecordType, dbCommon *precord, if (!prset) return; /* unlikely */ precord->rset = prset; + precord->rdes = pdbRecordType; precord->mlok = epicsMutexMustCreate(); ellInit(&precord->mlis);