diff options
author | Dana Robinson <derobins@hdfgroup.org> | 2016-11-23 01:55:03 (GMT) |
---|---|---|
committer | Dana Robinson <derobins@hdfgroup.org> | 2016-11-23 01:55:03 (GMT) |
commit | e2863ca880a6983558d3ba3e5219164a57287f04 (patch) | |
tree | 26d4ce5f062ab8ef24b4d70447648f007897110f | |
parent | fff898558e3c828070abe81b4147bd959ed37ccb (diff) | |
download | hdf5-e2863ca880a6983558d3ba3e5219164a57287f04.zip hdf5-e2863ca880a6983558d3ba3e5219164a57287f04.tar.gz hdf5-e2863ca880a6983558d3ba3e5219164a57287f04.tar.bz2 |
Fixed a few memory problems in test/cache_logging.c and
test/h5test.c (which show up in test/vfd.c).
-rw-r--r-- | test/cache_logging.c | 1 | ||||
-rw-r--r-- | test/h5test.c | 33 | ||||
-rw-r--r-- | test/vfd.c | 2 |
3 files changed, 24 insertions, 12 deletions
diff --git a/test/cache_logging.c b/test/cache_logging.c index a5e399c..9190a8a 100644 --- a/test/cache_logging.c +++ b/test/cache_logging.c @@ -132,6 +132,7 @@ test_logging_api(void) TEST_ERROR; /* Clean up */ + HDfree(location); if(H5Fclose(fid) < 0) TEST_ERROR; diff --git a/test/h5test.c b/test/h5test.c index c126da8..f85e96c 100644 --- a/test/h5test.c +++ b/test/h5test.c @@ -1584,32 +1584,43 @@ h5_make_local_copy(const char *origfilename, const char *local_copy_name) { int fd_old = (-1), fd_new = (-1); /* File descriptors for copying data */ ssize_t nread; /* Number of bytes read in */ - void *buf; /* Buffer for copying data */ - const char *filename = H5_get_srcdir_filename(origfilename);; /* Get the test file name to copy */ + void *buf = NULL; /* Buffer for copying data */ + const char *filename = H5_get_srcdir_filename(origfilename); /* Get the test file name to copy */ /* Allocate copy buffer */ - if(NULL == (buf = HDmalloc(READ_BUF_SIZE))) - return -1; + if(NULL == (buf = HDcalloc((size_t)1, (size_t)READ_BUF_SIZE))) + goto error; /* Copy old file into temporary file */ if((fd_old = HDopen(filename, O_RDONLY, 0666)) < 0) - return -1; + goto error; if((fd_new = HDopen(local_copy_name, O_RDWR|O_CREAT|O_TRUNC, 0666)) < 0) - return -1; + goto error; /* Copy data */ while((nread = HDread(fd_old, buf, (size_t)READ_BUF_SIZE)) > 0) if(HDwrite(fd_new, buf, (size_t)nread) < 0) - return -1; + goto error; + /* Close files */ + if(HDclose(fd_old) < 0) + goto error; + if(HDclose(fd_new) < 0) + goto error; + /* Release memory */ HDfree(buf); - /* Close files */ - if(HDclose(fd_old) < 0) return -1; - if(HDclose(fd_new) < 0) return -1; - return 0; + +error: + /* ignore return values since we're already noted the problem */ + if(fd_old > 0) + HDclose(fd_old); + if(fd_new > 0) + HDclose(fd_new); + HDfree(buf); + return -1; } /* end h5_make_local_copy() */ @@ -997,7 +997,7 @@ test_family_compat(void) counter++; HDsnprintf(newname_individual, sizeof(newname_individual), newname, counter); HDsnprintf(pathname_individual, sizeof(pathname_individual), pathname, counter); - } + } /* end while */ /* Make sure we can open the file. Use the read and write mode to flush the * superblock. */ |