std/link: lnkConst avoid cantProceed()

This commit is contained in:
Michael Davidsaver
2017-04-21 11:29:22 -04:00
parent 7121b016d5
commit 43f6a06bcd
2 changed files with 18 additions and 3 deletions

View File

@@ -191,7 +191,13 @@ static jlif_result lnkCalc_string(jlink *pjlink, const char *val, size_t len)
return jlif_stop;
}
inbuf = epicsStrnDup(val, len);
inbuf = malloc(len+1);
if(!inbuf) {
errlogPrintf("lnkCalc: Out of memory\n");
return jlif_stop;
}
memcpy(inbuf, val, len);
inbuf[len] = '\0';
if (clink->pstate == ps_major) {
clink->major = inbuf;

View File

@@ -212,7 +212,11 @@ static jlif_result lnkConst_string(jlink *pjlink, const char *val, size_t len)
case s0:
clink->nElems = 1;
clink->type = sc40;
clink->value.scalar_string = epicsStrnDup(val, len);
clink->value.scalar_string = malloc(len+1);
if(!clink->value.scalar_string)
return jlif_stop;
strncpy(clink->value.scalar_string, val, len);
clink->value.scalar_string[len] = '\0';
break;
case a0:
@@ -225,8 +229,13 @@ static jlif_result lnkConst_string(jlink *pjlink, const char *val, size_t len)
if (!vec)
break;
vec[clink->nElems++] = epicsStrnDup(val, len);
vec[clink->nElems] = malloc(len+1);
if(!vec[clink->nElems])
return jlif_stop;
strncpy(vec[clink->nElems], val, len);
vec[clink->nElems][len] = '\0';
clink->value.pstrings = vec;
clink->nElems++;
break;
case af64: