From 0d18eda03f0986668261771c58c435f0c6488a28 Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Mon, 20 Aug 2001 12:26:13 -0500 Subject: [svn-r4394] Purpose: Bug Fix Description: Byte swapping routine was failing when attempting to convert 0 elements. Solution: Don't try to swap when there are no elements... :-) Platforms tested: Solaris 2.7 (arabica) --- src/H5Tconv.c | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/H5Tconv.c b/src/H5Tconv.c index f7cfc20..014f55f 100644 --- a/src/H5Tconv.c +++ b/src/H5Tconv.c @@ -538,9 +538,10 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, hsize_t nelmts, } md = src->size / 2; - buf_stride = buf_stride ? buf_stride : src->size; + buf_stride = buf_stride ? buf_stride : src->size; - /* Optimize for popular sizes */ + /* Optimize for popular sizes */ + if(nelmts>0) { switch(md) { case 1: /* Swap 2-byte objects */ #ifdef NO_DUFFS_DEVICE @@ -551,10 +552,10 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, hsize_t nelmts, buf[1] = tmp; } #else /* NO_DUFFS_DEVICE */ -{ + { size_t duff_count = (nelmts + 7) / 8; - switch (nelmts % 8) + switch ((long)(nelmts % 8)) { case 0: do @@ -609,7 +610,7 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, hsize_t nelmts, } while (--duff_count > 0); } -} + } #endif /* NO_DUFFS_DEVICE */ break; @@ -627,10 +628,10 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, hsize_t nelmts, buf[2] = tmp; } #else /* NO_DUFFS_DEVICE */ -{ + { size_t duff_count = (nelmts + 7) / 8; - switch (nelmts % 8) + switch ((long)(nelmts % 8)) { case 0: do @@ -741,7 +742,7 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, hsize_t nelmts, } while (--duff_count > 0); } -} + } #endif /* NO_DUFFS_DEVICE */ break; @@ -769,10 +770,10 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, hsize_t nelmts, buf[4] = tmp; } #else /* NO_DUFFS_DEVICE */ -{ + { size_t duff_count = (nelmts + 7) / 8; - switch (nelmts % 8) + switch ((long)(nelmts % 8)) { case 0: do @@ -963,7 +964,7 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, hsize_t nelmts, } while (--duff_count > 0); } -} + } #endif /* NO_DUFFS_DEVICE */ break; @@ -977,10 +978,10 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, hsize_t nelmts, } } #else /* NO_DUFFS_DEVICE */ -{ + { size_t duff_count = (nelmts + 7) / 8; - switch (nelmts % 8) + switch ((long)(nelmts % 8)) { case 0: do @@ -1067,10 +1068,11 @@ H5T_conv_order(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, hsize_t nelmts, } while (--duff_count > 0); } -} + } #endif /* NO_DUFFS_DEVICE */ break; } /* end switch */ + } /* end if */ break; case H5T_CONV_FREE: -- cgit v0.12