Fix lsi/lso puts with DBF_STRING data

This commit is contained in:
Andrew Johnson
2016-05-26 13:49:18 +02:00
parent 22d6ebe7e1
commit df200de27f
2 changed files with 8 additions and 6 deletions

View File

@@ -158,9 +158,10 @@ static long put_array_info(DBADDR *paddr, long nNew)
{
lsiRecord *prec = (lsiRecord *) paddr->precord;
if (nNew == prec->sizv)
--nNew; /* truncated string */
prec->val[nNew] = 0; /* ensure data is terminated */
if (nNew >= prec->sizv)
nNew = prec->sizv - 1; /* truncated string */
if (paddr->field_type == DBF_CHAR)
prec->val[nNew] = 0; /* ensure data is terminated */
return 0;
}

View File

@@ -200,9 +200,10 @@ static long put_array_info(DBADDR *paddr, long nNew)
{
lsoRecord *prec = (lsoRecord *) paddr->precord;
if (nNew == prec->sizv)
--nNew; /* truncated string */
prec->val[nNew] = 0; /* ensure data is terminated */
if (nNew >= prec->sizv)
nNew = prec->sizv - 1; /* truncated string */
if (paddr->field_type == DBF_CHAR)
prec->val[nNew] = 0; /* ensure data is terminated */
return 0;
}