summaryrefslogtreecommitdiffstats
path: root/src/H5FDfamily.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2001-11-27 16:29:13 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2001-11-27 16:29:13 (GMT)
commitd456c2bb82be98bc2b7c1039927eb52258d1a0eb (patch)
treea7d8a65aef5d962c89b0965c86eb535917c023ad /src/H5FDfamily.c
parent05264c88788f9bd9b04a58673ded246904210235 (diff)
downloadhdf5-d456c2bb82be98bc2b7c1039927eb52258d1a0eb.zip
hdf5-d456c2bb82be98bc2b7c1039927eb52258d1a0eb.tar.gz
hdf5-d456c2bb82be98bc2b7c1039927eb52258d1a0eb.tar.bz2
[svn-r4643] Purpose:
Code cleanup Description: Windows is generating hundreds of warnings from some of the practices in the library. Mostly, they are because size_t is 32-bit and hsize_t is 64-bit on Windows and we were carelessly casting the larger values down to the smaller ones without checking for overflow. Also, some other small code cleanups,etc. Solution: Re-worked some algorithms to eliminate the casts and also added more overflow checking for assignments and function parameters which needed casts. Kent did most of the work, I just went over his changes and fit them into the the library code a bit better. Platforms tested: FreeBSD 4.4 (hawkwind)
Diffstat (limited to 'src/H5FDfamily.c')
-rw-r--r--src/H5FDfamily.c32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/H5FDfamily.c b/src/H5FDfamily.c
index 0ecf171..80feac2 100644
--- a/src/H5FDfamily.c
+++ b/src/H5FDfamily.c
@@ -863,6 +863,9 @@ H5FD_family_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si
int i;
haddr_t sub;
size_t req;
+#ifndef NDEBUG
+ hsize_t tempreq;
+#endif /* NDEBUG */
H5P_genplist_t *plist; /* Property list pointer */
FUNC_ENTER(H5FD_family_read, FAIL);
@@ -883,9 +886,18 @@ H5FD_family_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si
/* Read from each member */
while (size>0) {
- i = addr / file->memb_size;
+ H5_ASSIGN_OVERFLOW(i,addr /file->memb_size,hsize_t,int);
+
sub = addr % file->memb_size;
- req = MIN(size, file->memb_size-sub);
+
+#ifndef NDEBUG
+ tempreq = file->memb_size-sub;
+ H5_CHECK_OVERFLOW(tempreq,hsize_t,size_t);
+ req = MIN(size, (size_t)tempreq);
+#else /* NDEBUG */
+ req = MIN(size, (size_t)(file->memb_size-sub));
+#endif /* NDEBUG */
+
assert(i<file->nmembs);
if (H5FDread(file->memb[i], type, memb_dxpl_id, sub, req, buf)<0)
@@ -929,6 +941,9 @@ H5FD_family_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, s
int i;
haddr_t sub;
size_t req;
+#ifndef NDEBUG
+ hsize_t tempreq;
+#endif /* NDEBUG */
H5P_genplist_t *plist; /* Property list pointer */
FUNC_ENTER(H5FD_family_write, FAIL);
@@ -949,9 +964,18 @@ H5FD_family_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, s
/* Write to each member */
while (size>0) {
- i = addr / file->memb_size;
+ H5_ASSIGN_OVERFLOW(i,addr /file->memb_size,hsize_t,int);
+
sub = addr % file->memb_size;
- req = MIN(size, file->memb_size-sub);
+
+#ifndef NDEBUG
+ tempreq = file->memb_size-sub;
+ H5_CHECK_OVERFLOW(tempreq,hsize_t,size_t);
+ req = MIN(size, (size_t)tempreq);
+#else /* NDEBUG */
+ req = MIN(size, (size_t)(file->memb_size-sub));
+#endif /* NDEBUG */
+
assert(i<file->nmembs);
if (H5FDwrite(file->memb[i], type, memb_dxpl_id, sub, req, buf)<0)