From af69f5a06227ea8a9a4f6aed43a9dd478d4e5ffe Mon Sep 17 00:00:00 2001 From: hades Date: Mon, 2 Apr 2001 13:26:31 +0000 Subject: [PATCH] *** empty log message *** --- allParam/ca/server/paramBlobRecord.cc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/allParam/ca/server/paramBlobRecord.cc b/allParam/ca/server/paramBlobRecord.cc index 04febc3..537e5fd 100644 --- a/allParam/ca/server/paramBlobRecord.cc +++ b/allParam/ca/server/paramBlobRecord.cc @@ -13,7 +13,7 @@ ParamBlobRecord::ParamBlobRecord(caServer& cas, const Param *p, const char *rn, size_t size; FILE *tmp; if(Param_getBlob(param, name, idx, &size, &tmp) == 0) { - index = (unsigned int) (size + 1) / sizeof(aitUint32); + index = (unsigned int) ((size - 1) / sizeof(aitUint32)) + 2; } else { index = 0; } @@ -64,12 +64,13 @@ gddAppFuncTableStatus ParamBlobRecord::readValue(gdd &value) int retVal; retVal = Param_getBlob(param, name, idx, &size, &blob); - index = 1 + (((unsigned int) size - 1) / sizeof(aitUint32)); + index = 2 + (((unsigned int) size - 1) / sizeof(aitUint32)); if((retVal != 0) || (index == 0)) { return S_cas_noRead; } else { aitUint32 *ourValue = new aitUint32[index]; - fread(ourValue, sizeof(aitUint32), index, blob); + *ourValue = size; + fread(ourValue + 1, sizeof(aitUint32), index - 1, blob); fclose(blob); value.putRef(ourValue); @@ -88,12 +89,13 @@ caStatus ParamBlobRecord::scan() caServer *pCAS = this->getCAS(); retVal = Param_getBlob(param, name, idx, &size, &blob); - index = 1 + (((unsigned int) size - 1) / sizeof(aitUint32)); + index = 2 + (((unsigned int) size - 1) / sizeof(aitUint32)); if((retVal != 0) || (index == 0)) { return S_cas_noRead; } else { aitUint32 *ourValue = new aitUint32[index]; - fread(ourValue, sizeof(aitUint32), index, blob); + *ourValue = size; + fread(ourValue + 1, sizeof(aitUint32), index - 1, blob); fclose(blob); val = new gddAtomic(gddAppType_value, aitEnumString, 1, index); -- 2.43.0