Skip to content
Snippets Groups Projects
Commit 208f996c authored by Thomas Jahns's avatar Thomas Jahns :cartwheel:
Browse files

Use already computed storage size.

parent 6213acc4
No related branches found
No related tags found
2 merge requests!91Add alternative code path for huge buffers.,!89Miscellaneous fixes and CDI-PIO improvements
......@@ -234,7 +234,8 @@ extInqData(extrec_t *extp, int prec, void *data)
{
int ierr = 0;
int byteswap = extp->byteswap;
size_t datasize = extp->datasize;
size_t datasize = extp->datasize,
buffer_size = datasize * (size_t) prec;
void *buffer = extp->buffer;
int rprec = extp->prec;
......@@ -245,7 +246,7 @@ extInqData(extrec_t *extp, int prec, void *data)
if (byteswap) swap4byte(buffer, datasize);
if (EXSE_PREC_FP32 == prec)
memcpy(data, buffer, datasize * prec);
memcpy(data, buffer, buffer_size);
else if (EXSE_PREC_FP64 == prec)
for (size_t i = 0; i < datasize; ++i) ((double *) data)[i] = (double) ((float *) buffer)[i];
#ifdef HAVE__FLOAT16
......@@ -259,7 +260,7 @@ extInqData(extrec_t *extp, int prec, void *data)
if (byteswap) swap8byte(buffer, datasize);
if (EXSE_PREC_FP64 == prec)
memcpy(data, buffer, datasize * prec);
memcpy(data, buffer, buffer_size);
else if (EXSE_PREC_FP32 == prec)
for (size_t i = 0; i < datasize; ++i) ((float *) data)[i] = (float) ((double *) buffer)[i];
#ifdef HAVE__FLOAT16
......@@ -272,7 +273,7 @@ extInqData(extrec_t *extp, int prec, void *data)
case EXSE_PREC_FP16:
{
if (EXSE_PREC_FP16 == prec)
memcpy(data, buffer, datasize * prec);
memcpy(data, buffer, buffer_size);
else if (EXSE_PREC_FP64 == prec)
for (size_t i = 0; i < datasize; ++i) ((double *) data)[i] = (double) ((_Float16 *) buffer)[i];
else if (EXSE_PREC_FP32 == prec)
......@@ -337,7 +338,7 @@ extDefData(void *ext, int prec, const void *data)
case EXSE_PREC_FP32:
{
if (EXSE_PREC_FP32 == prec)
memcpy(extp->buffer, data, datasize * prec);
memcpy(extp->buffer, data, blocklen);
else if (EXSE_PREC_FP64 == prec)
for (size_t i = 0; i < datasize; i++) ((float *) extp->buffer)[i] = (float) ((double *) data)[i];
#ifdef HAVE__FLOAT16
......@@ -349,7 +350,7 @@ extDefData(void *ext, int prec, const void *data)
case EXSE_PREC_FP64:
{
if (EXSE_PREC_FP64 == prec)
memcpy(extp->buffer, data, datasize * prec);
memcpy(extp->buffer, data, blocklen);
else if (EXSE_PREC_FP32 == prec)
for (size_t i = 0; i < datasize; i++) ((double *) extp->buffer)[i] = (double) ((float *) data)[i];
#ifdef HAVE__FLOAT16
......@@ -362,7 +363,7 @@ extDefData(void *ext, int prec, const void *data)
case EXSE_PREC_FP16:
{
if (EXSE_PREC_FP16 == prec)
memcpy(extp->buffer, data, datasize * prec);
memcpy(extp->buffer, data, blocklen);
else if (EXSE_PREC_FP32 == prec)
for (size_t i = 0; i < datasize; i++) ((_Float16 *) extp->buffer)[i] = (_Float16) ((float *) data)[i];
else if (EXSE_PREC_FP64 == prec)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment