]> jspc29.x-matter.uni-frankfurt.de Git - daqdata.git/commitdiff
*** empty log message ***
authorhades <hades>
Mon, 2 Apr 2001 13:26:31 +0000 (13:26 +0000)
committerhades <hades>
Mon, 2 Apr 2001 13:26:31 +0000 (13:26 +0000)
allParam/ca/server/paramBlobRecord.cc

index 04febc3ca55ab4668d04b8420dc5a697470c359e..537e5fdba6c4c92aea0b4134bf4240e2ebc31649 100644 (file)
@@ -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);