summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.txt2
-rw-r--r--c++/src/H5DxferProp.cpp37
-rw-r--r--c++/src/H5File.cpp24
-rw-r--r--c++/src/Makefile.in2
-rw-r--r--c++/src/h5c++.in33
-rw-r--r--c++/test/dsets.cpp6
-rw-r--r--c++/test/tattr.cpp2
-rw-r--r--c++/test/tcompound.cpp1
-rw-r--r--c++/test/tfile.cpp12
-rw-r--r--c++/test/tfilter.cpp4
-rw-r--r--c++/test/th5s.cpp1
-rw-r--r--c++/test/tlinks.cpp3
-rw-r--r--c++/test/trefer.cpp2
-rw-r--r--c++/test/ttypes.cpp4
-rw-r--r--c++/test/tvlstr.cpp5
-rw-r--r--config/lt_vers.am2
-rwxr-xr-xconfigure22
-rw-r--r--configure.ac9
-rw-r--r--fortran/src/Makefile.in2
-rw-r--r--fortran/src/h5fc.in41
-rw-r--r--hl/c++/src/Makefile.in2
-rw-r--r--hl/fortran/src/Makefile.in2
-rw-r--r--hl/src/Makefile.in2
-rw-r--r--hl/test/CMakeLists.txt7
-rw-r--r--release_docs/RELEASE.txt4
-rw-r--r--src/H5FDmulti.c144
-rw-r--r--src/H5FDmulti.h3
-rw-r--r--src/H5Tconv.c19
-rw-r--r--src/H5public.h4
-rw-r--r--src/Makefile.in2
-rw-r--r--test/tfile.c12
-rw-r--r--tools/h5copy/h5copy.c79
-rw-r--r--tools/h5ls/h5ls.c247
-rw-r--r--tools/h5repack/CMakeLists.txt12
-rw-r--r--tools/h5repack/h5repack.sh.in12
-rw-r--r--tools/h5repack/h5repack_copy.c10
-rw-r--r--tools/lib/CMakeLists.txt4
-rw-r--r--tools/lib/h5diff.c34
-rw-r--r--tools/lib/h5diff.h205
-rw-r--r--tools/lib/h5diff_array.c689
-rw-r--r--tools/lib/h5diff_attr.c14
-rw-r--r--tools/lib/h5tools_utils.h2
-rw-r--r--tools/misc/h5cc.in34
-rw-r--r--tools/misc/h5mkgrp.c13
-rw-r--r--vms/src/h5pubconf.h6
45 files changed, 831 insertions, 945 deletions
diff --git a/README.txt b/README.txt
index b3a5451..96c1121 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,4 @@
-HDF5 version 1.9.148 currently under development
+HDF5 version 1.9.149 currently under development
Please refer to the release_docs/INSTALL file for installation instructions.
------------------------------------------------------------------------------
diff --git a/c++/src/H5DxferProp.cpp b/c++/src/H5DxferProp.cpp
index 0785735..bc3e0af 100644
--- a/c++/src/H5DxferProp.cpp
+++ b/c++/src/H5DxferProp.cpp
@@ -266,43 +266,6 @@ void DSetMemXferPropList::getVlenMemManager( H5MM_allocate_t& alloc_func, void**
}
//--------------------------------------------------------------------------
-// Function: DSetMemXferPropList::setMulti
-///\brief Sets the data transfer property list for the multi-file driver.
-///\param memb_dxpl - OUT: Array of data access property lists
-///\exception H5::PropListIException
-///\par Description
-/// This function can only be used after the member map has
-/// been set with FileAccPropList::setMulti (not done - BMR.)
-// Programmer: Binh-Minh Ribler - April, 2004
-//--------------------------------------------------------------------------
-void DSetMemXferPropList::setMulti(const hid_t *memb_dxpl)
-{
- herr_t ret_value = H5Pset_dxpl_multi(id, memb_dxpl);
- if (ret_value < 0)
- {
- throw PropListIException("DSetMemXferPropList::setMulti",
- "H5Pset_dxpl_multi failed");
- }
-}
-
-//--------------------------------------------------------------------------
-// Function: DSetMemXferPropList::getMulti
-///\brief Returns multi-file data transfer property list information.
-///\param memb_dxpl - OUT: Array of data access property lists
-///\exception H5::PropListIException
-// Programmer: Binh-Minh Ribler - April, 2004
-//--------------------------------------------------------------------------
-void DSetMemXferPropList::getMulti(hid_t *memb_dxpl)
-{
- herr_t ret_value = H5Pget_dxpl_multi(id, memb_dxpl);
- if (ret_value < 0)
- {
- throw PropListIException("DSetMemXferPropList::getMulti",
- "H5Pget_dxpl_multi failed");
- }
-}
-
-//--------------------------------------------------------------------------
// Function: DSetMemXferPropList::setSmallDataBlockSize
///\brief Sets the size of a contiguous block reserved for small data.
///\param size - IN: Maximum size, in bytes, of the small data block.
diff --git a/c++/src/H5File.cpp b/c++/src/H5File.cpp
index 92c4d32..ede7469 100644
--- a/c++/src/H5File.cpp
+++ b/c++/src/H5File.cpp
@@ -61,7 +61,7 @@ H5File::H5File() : H5Location(), id(0) {}
/// modifying default file meta-data. Default to
/// FileCreatPropList::DEFAULT
///\param access_plist - IN: File access property list. Default to
-/// FileCreatPropList::DEFAULT
+/// FileAccPropList::DEFAULT
///\par Description
/// Valid values of \a flags include:
/// \li \c H5F_ACC_TRUNC - Truncate file, if it already exists,
@@ -77,11 +77,18 @@ H5File::H5File() : H5Location(), id(0) {}
/// please refer to the \b Special \b case section in the C layer
/// Reference Manual at:
/// http://www.hdfgroup.org/HDF5/doc/RM/RM_H5F.html#File-Create
+// Notes With a PGI compiler (~2012-2013), the exception thrown by p_get_file
+// could not be caught in the applications. Added try block here
+// to catch then re-throw it. -BMR 2013/03/21
// Programmer Binh-Minh Ribler - 2000
//--------------------------------------------------------------------------
H5File::H5File( const char* name, unsigned int flags, const FileCreatPropList& create_plist, const FileAccPropList& access_plist ) : H5Location(0)
{
- p_get_file(name, flags, create_plist, access_plist);
+ try {
+ p_get_file(name, flags, create_plist, access_plist);
+ } catch (FileIException open_file) {
+ throw open_file;
+ }
}
//--------------------------------------------------------------------------
@@ -94,12 +101,19 @@ H5File::H5File( const char* name, unsigned int flags, const FileCreatPropList& c
/// modifying default file meta-data. Default to
/// FileCreatPropList::DEFAULT
///\param access_plist - IN: File access property list. Default to
-/// FileCreatPropList::DEFAULT
+/// FileAccPropList::DEFAULT
+// Notes With a PGI compiler (~2012-2013), the exception thrown by p_get_file
+// could not be caught in the applications. Added try block here
+// to catch then re-throw it. -BMR 2013/03/21
// Programmer Binh-Minh Ribler - 2000
//--------------------------------------------------------------------------
H5File::H5File( const H5std_string& name, unsigned int flags, const FileCreatPropList& create_plist, const FileAccPropList& access_plist ) : H5Location(0)
{
- p_get_file(name.c_str(), flags, create_plist, access_plist);
+ try {
+ p_get_file(name.c_str(), flags, create_plist, access_plist);
+ } catch (FileIException open_file) {
+ throw open_file;
+ }
}
//--------------------------------------------------------------------------
@@ -187,7 +201,7 @@ bool H5File::isHdf5(const H5std_string& name )
///\param name - IN: Name of the file
///\param flags - IN: File access flags
///\param access_plist - IN: File access property list. Default to
-/// FileCreatPropList::DEFAULT
+/// FileAccPropList::DEFAULT
///\par Description
/// Valid values of \a flags include:
/// H5F_ACC_RDWR: Open with read/write access. If the file is
diff --git a/c++/src/Makefile.in b/c++/src/Makefile.in
index b025f0b..37e5d1b 100644
--- a/c++/src/Makefile.in
+++ b/c++/src/Makefile.in
@@ -467,7 +467,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 138
+LT_VERS_REVISION = 139
LT_VERS_AGE = 0
# Include src directory
diff --git a/c++/src/h5c++.in b/c++/src/h5c++.in
index 20435eb..8928d13 100644
--- a/c++/src/h5c++.in
+++ b/c++/src/h5c++.in
@@ -83,11 +83,12 @@ CXXLINKERBASE="@CXX@"
# CXXFLAGS, CPPFLAGS and LDFLAGS are reserved for use by the script user.
# FLAGS brought from the hdf5 build are put in H5BLD_*FLAGS.
-# User's CPPFLAGS and CXXFLAGS come after their H5BLD counterparts to override
-# them. User's LDFLAGS come just before clibpath, user's LIBS come after
-# $link_objs and before the hdf5 libraries in $link_args, followed by any
-# external library paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS
-# or LIBS carried in from the hdf5 build.
+# User's CPPFLAGS and CXXFLAGS come after their H5BLD counterparts. User's
+# LDFLAGS come just before clibpath, user's LIBS come after $link_objs and
+# before the hdf5 libraries in $link_args, followed by any external library
+# paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS or LIBS carried in
+# from the hdf5 build. The order of the flags is intended to give precedence
+# to the user's flags.
H5BLD_CXXFLAGS="@AM_CXXFLAGS@ @CXXFLAGS@"
H5BLD_CPPFLAGS="@AM_CPPFLAGS@ @CPPFLAGS@"
H5BLD_LDFLAGS="@AM_LDFLAGS@ @LDFLAGS@"
@@ -100,7 +101,16 @@ CPPFLAGS="${HDF5_CPPFLAGS:-$CPPFLAGSBASE}"
LDFLAGS="${HDF5_LDFLAGS:-$LDFLAGSBASE}"
LIBS="${HDF5_LIBS:-$LIBSBASE}"
-USE_SHARED_LIB="${HDF5_USE_SHLIB:-no}"
+# If a static library is available, the default will be to use it. If the only
+# available library is shared, it will be used by default. The user can
+# override either default, although choosing an unavailable library will result
+# in link errors.
+STATIC_AVAILABLE="@enable_static@"
+if test "${STATIC_AVAILABLE}" = "yes"; then
+ USE_SHARED_LIB="${HDF5_USE_SHLIB:-no}"
+else
+ USE_SHARED_LIB="${HDF5_USE_SHLIB:-yes}"
+fi
usage() {
# A wonderfully informative "usage" message.
@@ -365,11 +375,12 @@ if test "x$do_link" = "xyes"; then
# module. It's okay if they're included twice in the compile line.
link_args="$link_args $H5BLD_LDFLAGS $H5BLD_LIBS"
- # User's CPPFLAGS and CXXFLAGS come after their H5BLD counterparts to override
- # them. User's LDFLAGS come just before clibpath, user's LIBS come after
- # $link_objs and before the hdf5 libraries in $link_args, followed by any
- # external library paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS
- # or LIBS carried in from the hdf5 build.
+ # User's CPPFLAGS and CXXFLAGS come after their H5BLD counterparts. User's
+ # LDFLAGS come just before clibpath, user's LIBS come after $link_objs and
+ # before the hdf5 libraries in $link_args, followed by any external library
+ # paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS or LIBS carried in
+ # from the hdf5 build. The order of the flags is intended to give precedence
+ # to the user's flags.
$SHOW $CXXLINKER $H5BLD_CPPFLAGS $CPPFLAGS $H5BLD_CXXFLAGS $CXXFLAGS $LDFLAGS $clibpath $link_objs $LIBS $link_args $shared_link
diff --git a/c++/test/dsets.cpp b/c++/test/dsets.cpp
index e822b36..643762b 100644
--- a/c++/test/dsets.cpp
+++ b/c++/test/dsets.cpp
@@ -285,13 +285,7 @@ test_simple_io( H5File& file)
static herr_t
test_datasize()
{
-
SUBTEST("DataSet::getInMemDataSize()");
-
- int points[100][200];
- int check[100][200];
- int i, j, n;
-
try
{
// Open FILE1.
diff --git a/c++/test/tattr.cpp b/c++/test/tattr.cpp
index 100e725..1a15aea 100644
--- a/c++/test/tattr.cpp
+++ b/c++/test/tattr.cpp
@@ -964,7 +964,6 @@ static void test_attr_mult_read()
static void test_attr_delete()
{
H5std_string attr_name; // Buffer for attribute names
- int ii;
// Output message about test being performed
SUBTEST("Removing Attribute Function");
@@ -1364,7 +1363,6 @@ extern "C"
void test_attr()
{
// Output message about test being performed
- //MESSAGE("Testing Attributes\n");
MESSAGE(5, ("Testing Attributes\n"));
test_attr_basic_write(); // Test basic H5A writing code
diff --git a/c++/test/tcompound.cpp b/c++/test/tcompound.cpp
index fbb1219..28d8a1e 100644
--- a/c++/test/tcompound.cpp
+++ b/c++/test/tcompound.cpp
@@ -749,7 +749,6 @@ extern "C"
void test_compound()
{
// Output message about test being performed
- //MESSAGE("Testing Compound Data Type operations\n");
MESSAGE(5, ("Testing Compound Data Type operations\n"));
test_compound_1(); // various things about compound data types
diff --git a/c++/test/tfile.cpp b/c++/test/tfile.cpp
index ba38d7a..65b8e57 100644
--- a/c++/test/tfile.cpp
+++ b/c++/test/tfile.cpp
@@ -117,16 +117,16 @@ static void test_file_create()
"terminate called without an active exception
Command terminated by signal 6"
Commenting it out until it's fixed LK 20120626.
-#ifndef H5_HAVE_FILE_VERSIONS
+*/
try {
H5File file2 (FILE1, H5F_ACC_TRUNC); // should throw E
+
// Should FAIL but didn't, so throw an invalid action exception
throw InvalidActionException("H5File constructor", "Attempted to create an existing file.");
}
catch( FileIException E ) // catch truncating existing file
{} // do nothing, FAIL expected
-#endif
// Close file1
delete file1;
file1 = NULL;
@@ -144,7 +144,6 @@ static void test_file_create()
// Test create with H5F_ACC_TRUNC. This will truncate the existing file.
file1 = new H5File (FILE1, H5F_ACC_TRUNC);
-#ifndef H5_HAVE_FILE_VERSIONS
// Try to truncate first file again. This should fail because file1
// is the same file and is currently open.
try {
@@ -155,19 +154,17 @@ static void test_file_create()
}
catch( FileIException E ) // catching truncating opened file
{} // do nothing, FAIL expected
-#endif
+
// Try with H5F_ACC_EXCL. This should fail too because the file already
// exists.
try {
-// H5File file3 (FILE1, H5F_ACC_EXCL); // should throw E
+ H5File file3 (FILE1, H5F_ACC_EXCL); // should throw E
// Should FAIL but didn't, so throw an invalid action exception
throw InvalidActionException("H5File constructor", "H5F_ACC_EXCL attempt on an existing file.");
}
catch( FileIException E ) // catching H5F_ACC_EXCL on existing file
{} // do nothing, FAIL expected
-*/
- std::cerr << "SKIPPED for HDFFV-8067" << std::endl;
// Get the file-creation template
FileCreatPropList tmpl1 = file1->getCreatePlist();
@@ -627,7 +624,6 @@ void test_file()
{
// Output message about test being performed
MESSAGE(5, ("Testing File I/O operations\n"));
- //MESSAGE("Testing File I/O operations\n");
test_file_create(); // Test file creation (also creation templates)
test_file_open(); // Test file opening
diff --git a/c++/test/tfilter.cpp b/c++/test/tfilter.cpp
index 0dbdf00..9e60655 100644
--- a/c++/test/tfilter.cpp
+++ b/c++/test/tfilter.cpp
@@ -47,12 +47,14 @@
#define FILTER_CHUNK_DIM2 25
// will do this function later or use it as guideline - BMR - 2007/01/26
+#if 0
static herr_t test_filter_internal(hid_t fid, const char *name, hid_t dcpl,
int if_fletcher32, int corrupted, hsize_t *dset_size)
{
cerr << "do nothing right now" << endl;
return(0);
}
+#endif
/* Temporary filter IDs used for testing */
#define H5Z_FILTER_BOGUS 305
@@ -254,13 +256,11 @@ extern "C"
void test_filters()
{
// Output message about test being performed
- //MESSAGE("Testing Various Filters\n");
MESSAGE(5, ("Testing Various Filters\n"));
hid_t fapl_id;
fapl_id = h5_fileaccess(); // in h5test.c, returns a file access template
- int nerrors=0; // keep track of number of failures occurr
try
{
// Use the file access template id to create a file access prop. list
diff --git a/c++/test/th5s.cpp b/c++/test/th5s.cpp
index 32c40d5..7947a9b 100644
--- a/c++/test/th5s.cpp
+++ b/c++/test/th5s.cpp
@@ -569,7 +569,6 @@ extern "C"
void test_h5s()
{
// Output message about test being performed
- //MESSAGE("Testing Dataspaces\n");
MESSAGE(5, ("Testing Dataspaces\n"));
test_h5s_basic(); // Test basic H5S code
diff --git a/c++/test/tlinks.cpp b/c++/test/tlinks.cpp
index e4e691a..fca5918 100644
--- a/c++/test/tlinks.cpp
+++ b/c++/test/tlinks.cpp
@@ -226,6 +226,7 @@ typedef struct {
hbool_t *visited; /* Pointer to array of "visited link" flags */
} link_iter_info_t;
+#if 0
/* Link visit structs */
typedef struct {
const char *path; /* Path to link */
@@ -374,6 +375,7 @@ typedef struct {
unsigned idx; /* Index in object visit structure */
const obj_visit_t *info; /* Pointer to the object visit structure to use */
} ovisit_ud_t;
+#endif
static const char *FILENAME[] = {
"link0",
@@ -529,7 +531,6 @@ void test_links()
fapl_id = h5_fileaccess();
// Output message about test being performed
- //MESSAGE("Testing Various Links\n");
MESSAGE(5, ("Testing Various Links\n"));
try
{
diff --git a/c++/test/trefer.cpp b/c++/test/trefer.cpp
index 4eb5b21..ce18e58 100644
--- a/c++/test/trefer.cpp
+++ b/c++/test/trefer.cpp
@@ -235,7 +235,6 @@ static void test_reference_obj(void)
verify_val(name_size, DSET1_LEN, "Group::getObjnameByIdx(index,(std::string)buf,buf_len)", __LINE__, __FILE__);
// Test getObjnameByIdx(hsize_t idx, char* name, size_t size)
- char name_C[DSET1_LEN+1];
group.getObjnameByIdx(0, name, name_size+1);
verify_val(name, DSET1_NAME, "Group::getObjnameByIdx(index,(char*)buf,buf_len)", __LINE__, __FILE__);
verify_val(name_size, DSET1_LEN, "Group::getObjnameByIdx(index,(char*)buf,buf_len)", __LINE__, __FILE__);
@@ -345,7 +344,6 @@ extern "C"
void test_reference(void)
{
// Output message about test being performed
- //MESSAGE("Testing References\n");
MESSAGE(5, ("Testing References\n"));
test_reference_obj(); // Test basic object reference functionality
diff --git a/c++/test/ttypes.cpp b/c++/test/ttypes.cpp
index b1baa29..c10cf6d 100644
--- a/c++/test/ttypes.cpp
+++ b/c++/test/ttypes.cpp
@@ -52,6 +52,7 @@
* normally require alignment. When set, all native datatypes must be aligned
* on a byte boundary equal to the data size.
*/
+#if 0
#define TEST_ALIGNMENT
/* Alignment test stuff */
@@ -61,6 +62,9 @@
#endif
#define SET_ALIGNMENT(TYPE,VAL) \
H5T_NATIVE_##TYPE##_ALIGN_g=MAX(H5T_NATIVE_##TYPE##_ALIGN_g, VAL)
+#endif
+ /* #include "H5Tpkg.h"
+ */
const char *FILENAME[] = {
"dtypes1.h5",
diff --git a/c++/test/tvlstr.cpp b/c++/test/tvlstr.cpp
index 73e54e0..89f24f2 100644
--- a/c++/test/tvlstr.cpp
+++ b/c++/test/tvlstr.cpp
@@ -129,7 +129,7 @@ void test_vlstr_free_custom(void *_mem, void *info)
*-------------------------------------------------------------------------
*/
// String for testing datasets
-static char stastring_ds_write[1]={'A'};
+// static char stastring_ds_write[1]={'A'};
// Info for a string dataset
const H5std_string DSET1_NAME("String_ds");
@@ -687,6 +687,7 @@ static void test_vlstring_attribute()
}
} // test_vlstring_attribute()
+#if 0
/*-------------------------------------------------------------------------
* Function: test_read_vl_string_attribute
*
@@ -746,6 +747,7 @@ static void test_read_vl_string_attribute()
issue_fail_msg("test_read_vl_string_attribute()", __LINE__, __FILE__, E.getCDetailMsg());
}
} // test_read_vl_string_attribute
+#endif // 2013: need to verify before adding to test
/*-------------------------------------------------------------------------
* Function: test_vlstring_array_attribute
@@ -957,7 +959,6 @@ extern "C"
void test_vlstrings()
{
// Output message about test being performed
- //MESSAGE("Testing Variable-Length Strings");
MESSAGE(5, ("Testing Variable-Length Strings"));
// These tests use the same file
diff --git a/config/lt_vers.am b/config/lt_vers.am
index 37b5b68..8df77f3 100644
--- a/config/lt_vers.am
+++ b/config/lt_vers.am
@@ -17,7 +17,7 @@
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 138
+LT_VERS_REVISION = 139
LT_VERS_AGE = 0
## If the API changes *at all*, increment LT_VERS_INTERFACE and
diff --git a/configure b/configure
index 6b4a82b..55bb4b3 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac Id: configure.ac 22697 2012-08-19 14:35:47Z hdftest .
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for HDF5 1.9.148.
+# Generated by GNU Autoconf 2.69 for HDF5 1.9.149.
#
# Report bugs to <help@hdfgroup.org>.
#
@@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='HDF5'
PACKAGE_TARNAME='hdf5'
-PACKAGE_VERSION='1.9.148'
-PACKAGE_STRING='HDF5 1.9.148'
+PACKAGE_VERSION='1.9.149'
+PACKAGE_STRING='HDF5 1.9.149'
PACKAGE_BUGREPORT='help@hdfgroup.org'
PACKAGE_URL=''
@@ -1484,7 +1484,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures HDF5 1.9.148 to adapt to many kinds of systems.
+\`configure' configures HDF5 1.9.149 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1554,7 +1554,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of HDF5 1.9.148:";;
+ short | recursive ) echo "Configuration of HDF5 1.9.149:";;
esac
cat <<\_ACEOF
@@ -1750,7 +1750,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-HDF5 configure 1.9.148
+HDF5 configure 1.9.149
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2844,7 +2844,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by HDF5 $as_me 1.9.148, which was
+It was created by HDF5 $as_me 1.9.149, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3676,7 +3676,7 @@ fi
# Define the identity of the package.
PACKAGE='hdf5'
- VERSION='1.9.148'
+ VERSION='1.9.149'
cat >>confdefs.h <<_ACEOF
@@ -31813,7 +31813,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by HDF5 $as_me 1.9.148, which was
+This file was extended by HDF5 $as_me 1.9.149, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -31879,7 +31879,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-HDF5 config.status 1.9.148
+HDF5 config.status 1.9.149
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -34654,7 +34654,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-HDF5 config.lt 1.9.148
+HDF5 config.lt 1.9.149
configured by $0, generated by GNU Autoconf 2.69.
Copyright (C) 2011 Free Software Foundation, Inc.
diff --git a/configure.ac b/configure.ac
index e705340..cfe6cec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ AC_PREREQ([2.69])
## NOTE: Do not forget to change the version number here when we do a
## release!!!
##
-AC_INIT([HDF5], [1.9.148], [help@hdfgroup.org])
+AC_INIT([HDF5], [1.9.149], [help@hdfgroup.org])
AC_CONFIG_SRCDIR([src/H5.c])
AC_CONFIG_HEADER([src/H5config.h])
@@ -434,9 +434,10 @@ if test "X$HDF_FORTRAN" = "Xyes"; then
## --------------------------------------------------------------------
## General Fortran flags
- ##
- AM_FCFLAGS="${AM_FCFLAGS} ${FFLAGS}"
- FCFLAGS="${FCFLAGS} ${FFLAGS}"
+ ## Only add FFLAGS to FCFLAGS if it's set.
+ if test "x$FFLAGS" != "x" ; then
+ FCFLAGS="${FCFLAGS} ${FFLAGS}"
+ fi
## --------------------------------------------------------------------
## Fortran source extention
diff --git a/fortran/src/Makefile.in b/fortran/src/Makefile.in
index c41653f..7379980 100644
--- a/fortran/src/Makefile.in
+++ b/fortran/src/Makefile.in
@@ -518,7 +518,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 138
+LT_VERS_REVISION = 139
LT_VERS_AGE = 0
# Include src directory in both Fortran and C flags (C compiler is used
diff --git a/fortran/src/h5fc.in b/fortran/src/h5fc.in
index 2d7b5b4..c58eab0 100644
--- a/fortran/src/h5fc.in
+++ b/fortran/src/h5fc.in
@@ -80,12 +80,11 @@ FLINKERBASE="@FC@"
# FFLAGS and LDFLAGS are reserved for use by the script user.
# FLAGS brought from the hdf5 build are put in H5BLD_*FLAGS.
-# User's FFLAGS come after their H5BLD counterparts to override
-# them. User's LDFLAGS come just before clibpath, user's LIBS come after
-# $link_objs and before the hdf5 libraries in $link_args, followed by any
-# external library paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS
-# or LIBS carried in from the hdf5 build.
-
+# User's FFLAGS come after their H5BLD counterparts. User's LDFLAGS come just
+# before clibpath, user's LIBS come after $link_objs and before the hdf5
+# libraries in $link_args, followed by any external library paths and libraries
+# from AM_LDFLAGS, LDFLAGS, AM_LIBS or LIBS carried in from the hdf5 build.
+# The order of the flags is intended to give precedence to the user's flags.
H5BLD_FFLAGS="@AM_FCFLAGS@ @FCFLAGS@"
F9XMODFLAG="@F9XMODFLAG@"
F9XSUFFIXFLAG="@F9XSUFFIXFLAG@"
@@ -98,7 +97,16 @@ FFLAGS="${HDF5_FFLAGS:-$FFLAGSBASE}"
LDFLAGS="${HDF5_LDFLAGS:-$LDFLAGSBASE}"
LIBS="${HDF5_LIBS:-$LIBSBASE}"
-USE_SHARED_LIB="${HDF5_USE_SHLIB:-no}"
+# If a static library is available, the default will be to use it. If the only
+# available library is shared, it will be used by default. The user can
+# override either default, although choosing an unavailable library will result
+# in link errors.
+STATIC_AVAILABLE="@enable_static@"
+if test "${STATIC_AVAILABLE}" = "yes"; then
+ USE_SHARED_LIB="${HDF5_USE_SHLIB:-no}"
+else
+ USE_SHARED_LIB="${HDF5_USE_SHLIB:-yes}"
+fi
usage() {
# A wonderfully informative "usage" message.
@@ -233,8 +241,13 @@ for arg in $@ ; do
*) allargs="$allargs $arg"
if [ -s "$arg" ] ; then
ext=`expr "$arg" : '.*\(\..*\)'`
- if [ "$ext" = ".f" -o "$ext" = ".F" -o "$ext" = ".f90" -o \
- "$ext" = ".for" -o "$ext" = ".FOR" -o "$ext" = ".F90" ] ; then
+ if [ "$ext" = ".f" -o "$ext" = ".F" -o \
+ "$ext" = ".for" -o "$ext" = ".FOR" -o \
+ "$ext" = ".ftn" -o "$ext" = ".FTN" -o \
+ "$ext" = ".f90" -o "$ext" = ".F90" -o \
+ "$ext" = ".f95" -o "$ext" = ".F95" -o \
+ "$ext" = ".f03" -o "$ext" = ".F03" -o \
+ "$ext" = ".f08" -o "$ext" = ".F08" ] ; then
do_compile="yes"
compile_args="$compile_args $arg"
fname=`basename $arg $ext`
@@ -344,11 +357,11 @@ if test "x$do_link" = "xyes"; then
# module. It's okay if they're included twice in the compile line.
link_args="$link_args $H5BLD_LDFLAGS $H5BLD_LIBS"
- # User's FFLAGS come after their H5BLD counterparts to override
- # them. User's LDFLAGS come just before clibpath, user's LIBS come after
- # $link_objs and before the hdf5 libraries in $link_args, followed by any
- # external library paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS
- # or LIBS carried in from the hdf5 build.
+ # User's FFLAGS come after their H5BLD counterparts. User's LDFLAGS come just
+ # before clibpath, user's LIBS come after $link_objs and before the hdf5
+ # libraries in $link_args, followed by any external library paths and libraries
+ # from AM_LDFLAGS, LDFLAGS, AM_LIBS or LIBS carried in from the hdf5 build.
+ # The order of the flags is intended to give precedence to the user's flags.
$SHOW $FLINKER $FFLAGS $H5BLD_FFLAGS $F9XSUFFIXFLAG $LDFLAGS $fmodules $link_objs $LIBS $link_args $shared_link
status=$?
fi
diff --git a/hl/c++/src/Makefile.in b/hl/c++/src/Makefile.in
index 89aee46..b360bf3 100644
--- a/hl/c++/src/Makefile.in
+++ b/hl/c++/src/Makefile.in
@@ -458,7 +458,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 138
+LT_VERS_REVISION = 139
LT_VERS_AGE = 0
# Include src directory
diff --git a/hl/fortran/src/Makefile.in b/hl/fortran/src/Makefile.in
index fc734df..fb54a54 100644
--- a/hl/fortran/src/Makefile.in
+++ b/hl/fortran/src/Makefile.in
@@ -474,7 +474,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 138
+LT_VERS_REVISION = 139
LT_VERS_AGE = 0
INCLUDES = -I$(top_srcdir)/src -I$(top_srcdir)/hl/src -I$(top_builddir)/hl/src \
-I$(top_srcdir)/fortran/src -I$(top_builddir)/fortran/src
diff --git a/hl/src/Makefile.in b/hl/src/Makefile.in
index bd46a70..37d5af8 100644
--- a/hl/src/Makefile.in
+++ b/hl/src/Makefile.in
@@ -457,7 +457,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 138
+LT_VERS_REVISION = 139
LT_VERS_AGE = 0
# This library is our main target.
diff --git a/hl/test/CMakeLists.txt b/hl/test/CMakeLists.txt
index 39a3811..c5b6f6e 100644
--- a/hl/test/CMakeLists.txt
+++ b/hl/test/CMakeLists.txt
@@ -31,6 +31,9 @@ MACRO (HL_ADD_TEST hl_name files)
SET_TARGET_PROPERTIES (hl_${hl_name} PROPERTIES FOLDER test/hl)
ADD_TEST (NAME hl_${hl_name} COMMAND $<TARGET_FILE:hl_${hl_name}>)
+ IF (NOT "${last_test}" STREQUAL "")
+ SET_TESTS_PROPERTIES (hl_${hl_name} PROPERTIES DEPENDS ${last_test})
+ ENDIF (NOT "${last_test}" STREQUAL "")
# --------------------------------------------------------------------
#-- Copy the necessary files.
@@ -75,6 +78,10 @@ ADD_TEST (
test_packet_table.h5
test_table.h5
)
+IF (NOT "${last_test}" STREQUAL "")
+ SET_TESTS_PROPERTIES (hl_test-clear-objects PROPERTIES DEPENDS ${last_test})
+ENDIF (NOT "${last_test}" STREQUAL "")
+SET (last_test "hl_test-clear-objects")
HL_ADD_TEST (test_ds "dsdata.txt;dslat.txt;dslon.txt;test_ds_be.h5;test_ds_le.h5")
HL_ADD_TEST (test_dset_opt "")
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 1f4016c..8a54b21 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -1,4 +1,4 @@
-HDF5 version 1.9.148 currently under development
+HDF5 version 1.9.149 currently under development
================================================================================
@@ -751,6 +751,8 @@ Bug Fixes since HDF5-1.8.0 release
Tools
-----
+ - h5repack: Fixed failure for converting a layout of small chunked dataset
+ (size < 1K) to contiguous layout. HDFFV-8214 (JKM 2013/03/18)
- h5diff: Fixed to return correct exit code 1 when detect unique extra
attribute. Prior to this fix, h5diff returned exit code 0 indicating
two files are identical. HDFFV-7643 (JKM 2013/02/15)
diff --git a/src/H5FDmulti.c b/src/H5FDmulti.c
index 5bdfbbe..9d6e065 100644
--- a/src/H5FDmulti.c
+++ b/src/H5FDmulti.c
@@ -726,150 +726,6 @@ H5FD_multi_dxpl_cls_cb(const char *name, size_t size, void *_dx)
return 0;
} /* end H5FD_multi_dxpl_cls_cb() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Pset_dxpl_multi
- *
- * Purpose: Set the data transfer property list DXPL_ID to use the multi
- * driver with the specified data transfer properties for each
- * memory usage type MEMB_DXPL[] (after the usage map is
- * applied).
- *
- * Return: Success: 0
- *
- * Failure: -1
- *
- * Programmer: Robb Matzke
- * Tuesday, August 10, 1999
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Pset_dxpl_multi(hid_t dxpl_id, const hid_t *memb_dxpl)
-{
- H5FD_multi_dxpl_t dx;
- H5FD_mem_t mt;
- htri_t prop_exists; /* Whether the multi VFD DXPL property already exists */
- static const char *func = "H5FDset_dxpl_multi"; /* Function Name for error reporting */
-
- /*NO TRACE*/
-
- /* Clear the error stack */
- H5Eclear2(H5E_DEFAULT);
-
- /* Check arguments */
- if(TRUE != H5Pisa_class(dxpl_id, H5P_DATASET_XFER))
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_BADTYPE, "not a data transfer property list", -1)
- if(!memb_dxpl)
- H5Epush_ret(func, H5E_ERR_CLS, H5E_INTERNAL, H5E_BADVALUE, "invalid pointer", -1)
- for(mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; mt = (H5FD_mem_t)(mt + 1)) {
- if(memb_dxpl[mt] != H5P_DEFAULT && TRUE != H5Pisa_class(memb_dxpl[mt], H5P_DATASET_XFER))
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_BADTYPE, "not a data transfer property list", -1)
- } /* end for */
-
- /* Check for existence of multi VFD DXPL property in DXPL */
- if((prop_exists = H5Pexist(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME)) < 0)
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't check for multi VFD property", -1)
-
- /* Copy the DXPLs to internal property, converting "generic" default
- * property lists into default dataset transfer property lists */
- for(mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; mt = (H5FD_mem_t)(mt + 1)) {
- if(memb_dxpl[mt] == H5P_DEFAULT)
- dx.memb_dxpl[mt] = H5P_DATASET_XFER_DEFAULT;
- else {
- if((dx.memb_dxpl[mt] = H5Pcopy(memb_dxpl[mt])) < 0)
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTCOPY, "can't copy dataset transfer property list", -1)
- } /* end else */
- } /* end for */
-
- /* Clear previous property, if it exists */
- if(prop_exists) {
- H5FD_multi_dxpl_t old_dx;
-
- /* Get the old DXPL value */
- if(H5Pget(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME, &old_dx) < 0)
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't get previous property value", -1)
-
- ALL_MEMBERS(mt) {
- if(old_dx.memb_dxpl[mt] >= 0)
- if(H5Pclose(old_dx.memb_dxpl[mt]) < 0)
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTCLOSEOBJ, "can't close property list", -1)
- } END_MEMBERS;
-
- /* Set the new value */
- if(H5Pset(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME, &dx) < 0)
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't get previous property value", -1)
- } /* end if */
- else {
- /* Insert multi VFD DXPL property into property list */
- if(H5Pinsert2(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME, H5FD_MULTI_DXPL_PROP_SIZE, &dx, NULL, NULL, NULL, H5FD_multi_dxpl_copy_cb, H5FD_multi_dxpl_cmp_cb, H5FD_multi_dxpl_cls_cb) < 0)
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTINSERT, "can't insert multi VFD DXPL property", -1)
- } /* end else */
-
- return 0;
-} /* end H5Pset_dxpl_multi() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Pget_dxpl_multi
- *
- * Purpose: Returns information which was set with H5Pset_dxpl_multi()
- * above.
- *
- * Return: Success: 0
- *
- * Failure: -1
- *
- * Programmer: Robb Matzke
- * Tuesday, August 10, 1999
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Pget_dxpl_multi(hid_t dxpl_id, hid_t *memb_dxpl/*out*/)
-{
- H5FD_multi_dxpl_t dx;
- H5FD_mem_t mt;
- htri_t prop_exists; /* Whether the multi VFD DXPL property already exists */
- static const char *func = "H5FDget_dxpl_multi"; /* Function Name for error reporting */
-
- /*NO TRACE*/
-
- /* Clear the error stack */
- H5Eclear2(H5E_DEFAULT);
-
- /* Argument checking */
- if(TRUE != H5Pisa_class(dxpl_id, H5P_DATASET_XFER))
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_BADTYPE, "not a file access property list", -1)
-
- if(memb_dxpl) {
- /* Check for existence of multi VFD DXPL property in DXPL */
- if((prop_exists = H5Pexist(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME)) < 0)
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't check for multi VFD property", -1)
- if(!prop_exists)
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "multi VFD DXPL property not set", -1)
-
- /* Get the DXPL value */
- if(H5Pget(dxpl_id, H5FD_MULTI_DXPL_PROP_NAME, &dx) < 0)
- H5Epush_ret(func, H5E_ERR_CLS, H5E_PLIST, H5E_CANTGET, "can't get property value", -1)
-
- /* Deep copy the multi VFD DXPL value */
- for(mt = H5FD_MEM_DEFAULT; mt < H5FD_MEM_NTYPES; mt = (H5FD_mem_t)(mt + 1)) {
- if(dx.memb_dxpl[mt] >= 0)
- memb_dxpl[mt] = H5Pcopy(dx.memb_dxpl[mt]);
- else
- memb_dxpl[mt] = dx.memb_dxpl[mt]; /*default or bad ID */
- } /* end for */
- } /* end if */
-
- return 0;
-} /* end H5Pget_dxpl_multi() */
-
/*-------------------------------------------------------------------------
* Function: H5FD_multi_sb_size
diff --git a/src/H5FDmulti.h b/src/H5FDmulti.h
index da16b0c..e819e74 100644
--- a/src/H5FDmulti.h
+++ b/src/H5FDmulti.h
@@ -34,9 +34,6 @@ H5_DLL herr_t H5Pset_fapl_multi(hid_t fapl_id, const H5FD_mem_t *memb_map,
H5_DLL herr_t H5Pget_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map/*out*/,
hid_t *memb_fapl/*out*/, char **memb_name/*out*/,
haddr_t *memb_addr/*out*/, hbool_t *relax/*out*/);
-H5_DLL herr_t H5Pset_dxpl_multi(hid_t dxpl_id, const hid_t *memb_dxpl);
-H5_DLL herr_t H5Pget_dxpl_multi(hid_t dxpl_id, hid_t *memb_dxpl/*out*/);
-
H5_DLL herr_t H5Pset_fapl_split(hid_t fapl, const char *meta_ext,
hid_t meta_plist_id, const char *raw_ext,
hid_t raw_plist_id);
diff --git a/src/H5Tconv.c b/src/H5Tconv.c
index 5ecf864..b732817 100644
--- a/src/H5Tconv.c
+++ b/src/H5Tconv.c
@@ -3014,17 +3014,17 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
{
H5T_vlen_alloc_info_t _vl_alloc_info; /* VL allocation info buffer */
H5T_vlen_alloc_info_t *vl_alloc_info = &_vl_alloc_info; /* VL allocation info */
- H5T_path_t *tpath; /* Type conversion path */
+ H5T_path_t *tpath = NULL; /* Type conversion path */
hbool_t noop_conv = FALSE; /* Flag to indicate a noop conversion */
hbool_t write_to_file = FALSE; /* Flag to indicate writing to file */
hbool_t parent_is_vlen; /* Flag to indicate parent is vlen datatyp */
hid_t tsrc_id = -1, tdst_id = -1;/*temporary type atoms */
- H5T_t *src; /*source datatype */
- H5T_t *dst; /*destination datatype */
+ H5T_t *src = NULL; /*source datatype */
+ H5T_t *dst = NULL; /*destination datatype */
H5HG_t bg_hobjid, parent_hobjid;
- uint8_t *s; /*source buffer */
- uint8_t *d; /*destination buffer */
- uint8_t *b; /*background buffer */
+ uint8_t *s = NULL; /*source buffer */
+ uint8_t *d = NULL; /*destination buffer */
+ uint8_t *b = NULL; /*background buffer */
ssize_t s_stride, d_stride; /*src and dst strides */
ssize_t b_stride; /*bkg stride */
size_t safe; /*how many elements are safe to process in each pass */
@@ -3120,7 +3120,7 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
if(tpath->cdata.need_bkg || parent_is_vlen) {
/* Set up initial background buffer */
tmp_buf_size = MAX(src_base_size, dst_base_size);
- if(NULL == (tmp_buf = H5FL_BLK_MALLOC(vlen_seq,tmp_buf_size)))
+ if(NULL == (tmp_buf = H5FL_BLK_CALLOC(vlen_seq,tmp_buf_size)))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for type conversion")
} /* end if */
@@ -3200,7 +3200,7 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
*/
if(!seq_len && !conv_buf) {
conv_buf_size = ((1 / H5T_VLEN_MIN_CONF_BUF_SIZE) + 1) * H5T_VLEN_MIN_CONF_BUF_SIZE;
- if(NULL == (conv_buf = H5FL_BLK_MALLOC(vlen_seq, conv_buf_size)))
+ if(NULL == (conv_buf = H5FL_BLK_CALLOC(vlen_seq, conv_buf_size)))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for type conversion")
}
else if(conv_buf_size < MAX(src_size, dst_size)) {
@@ -3208,6 +3208,7 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
conv_buf_size = ((MAX(src_size, dst_size) / H5T_VLEN_MIN_CONF_BUF_SIZE) + 1) * H5T_VLEN_MIN_CONF_BUF_SIZE;
if(NULL == (conv_buf = H5FL_BLK_REALLOC(vlen_seq, conv_buf, conv_buf_size)))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for type conversion")
+ HDmemset(conv_buf, 0, conv_buf_size);
} /* end if */
/* Read in VL sequence */
@@ -3223,6 +3224,7 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
tmp_buf_size = conv_buf_size;
if(NULL == (tmp_buf = H5FL_BLK_REALLOC(vlen_seq, tmp_buf, tmp_buf_size)))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for type conversion")
+ HDmemset(tmp_buf, 0, tmp_buf_size);
} /* end if */
/* If we are writing and there is a nested VL type, read
@@ -3236,6 +3238,7 @@ H5T__conv_vlen(hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata, size_t nelmts,
tmp_buf_size = (bg_seq_len * MAX(src_base_size, dst_base_size));
if(NULL == (tmp_buf = H5FL_BLK_REALLOC(vlen_seq, tmp_buf, tmp_buf_size)))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for type conversion")
+ HDmemset(tmp_buf, 0, tmp_buf_size);
} /* end if */
H5F_addr_decode(dst->shared->u.vlen.f, (const uint8_t **)&tmp, &(bg_hobjid.addr));
INT32DECODE(tmp, bg_hobjid.idx);
diff --git a/src/H5public.h b/src/H5public.h
index f66508d..deb4587 100644
--- a/src/H5public.h
+++ b/src/H5public.h
@@ -75,10 +75,10 @@ extern "C" {
/* Version numbers */
#define H5_VERS_MAJOR 1 /* For major interface/format changes */
#define H5_VERS_MINOR 9 /* For minor interface/format changes */
-#define H5_VERS_RELEASE 148 /* For tweaks, bug-fixes, or development */
+#define H5_VERS_RELEASE 149 /* For tweaks, bug-fixes, or development */
#define H5_VERS_SUBRELEASE "" /* For pre-releases like snap0 */
/* Empty string for real releases. */
-#define H5_VERS_INFO "HDF5 library version: 1.9.148" /* Full version string */
+#define H5_VERS_INFO "HDF5 library version: 1.9.149" /* Full version string */
#define H5check() H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR, \
H5_VERS_RELEASE)
diff --git a/src/Makefile.in b/src/Makefile.in
index 3c9098f..f280987 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -522,7 +522,7 @@ CHECK_CLEANFILES = *.chkexe *.chklog *.clog
# Add libtool shared library version numbers to the HDF5 library
# See libtool versioning documentation online.
LT_VERS_INTERFACE = 6
-LT_VERS_REVISION = 138
+LT_VERS_REVISION = 139
LT_VERS_AGE = 0
H5detect_CFLAGS = -g $(AM_CFLAGS)
diff --git a/test/tfile.c b/test/tfile.c
index e669bd0..ac2ef82 100644
--- a/test/tfile.c
+++ b/test/tfile.c
@@ -3084,7 +3084,7 @@ test_filespace_compatible(void)
VERIFY(free_space, (hssize_t)0, "H5Fget_freespace");
/* Get the file's file creation property list */
- /* Retrieve the file space handling stretegy and threshold */
+ /* Retrieve the file space handling strategy and threshold */
fcpl = H5Fget_create_plist(fid);
CHECK(fcpl, FAIL, "H5Fget_create_plist");
ret = H5Pget_file_space(fcpl, &strategy, &threshold);
@@ -3117,9 +3117,13 @@ test_filespace_compatible(void)
ret = H5Ldelete(fid, DSETNAME, H5P_DEFAULT);
CHECK(ret, FAIL, "H5Ldelete");
- /* Close the file */
- ret = H5Fclose(fid);
- CHECK(ret, FAIL, "H5Fclose");
+ /* Close the plist */
+ ret = H5Pclose(fcpl);
+ CHECK(ret, FAIL, "H5Pclose");
+
+ /* Close the file */
+ ret = H5Fclose(fid);
+ CHECK(ret, FAIL, "H5Fclose");
/* Re-Open the file */
fid = H5Fopen(FILE5, H5F_ACC_RDONLY, H5P_DEFAULT);
diff --git a/tools/h5copy/h5copy.c b/tools/h5copy/h5copy.c
index 574ba94..3fb5701 100644
--- a/tools/h5copy/h5copy.c
+++ b/tools/h5copy/h5copy.c
@@ -36,6 +36,11 @@ static struct long_options l_opts[] = {
{ "version", no_arg, 'V' },
{ NULL, 0, '\0' }
};
+char *fname_src = NULL;
+char *fname_dst = NULL;
+char *oname_src = NULL;
+char *oname_dst = NULL;
+char *str_flag = NULL;
/*-------------------------------------------------------------------------
* Function: leave
@@ -54,6 +59,17 @@ static struct long_options l_opts[] = {
static void
leave(int ret)
{
+ if (fname_src)
+ HDfree(fname_src);
+ if (fname_dst)
+ HDfree(fname_dst);
+ if (oname_dst)
+ HDfree(oname_dst);
+ if (oname_src)
+ HDfree(oname_src);
+ if (str_flag)
+ HDfree(str_flag);
+
h5tools_close();
HDexit(ret);
}
@@ -199,23 +215,16 @@ static int parse_flag(const char* str_flag, unsigned *flag)
int
main (int argc, const char *argv[])
{
- hid_t fid_src=-1;
- hid_t fid_dst=-1;
- char *fname_src=NULL;
- char *fname_dst=NULL;
- char *oname_src=NULL;
- char *oname_dst=NULL;
- unsigned flag=0;
- unsigned verbose=0;
- unsigned parents=0;
+ hid_t fid_src = -1;
+ hid_t fid_dst = -1;
+ unsigned flag = 0;
+ unsigned verbose = 0;
+ unsigned parents = 0;
hid_t ocpl_id = (-1); /* Object copy property list */
hid_t lcpl_id = (-1); /* Link creation property list */
- char str_flag[20];
int opt;
int li_ret;
h5tool_link_info_t linkinfo;
- int i, len;
- char *str_ptr=NULL;
h5tools_setprogname(PROGRAMNAME);
h5tools_setstatus(EXIT_SUCCESS);
@@ -249,7 +258,7 @@ main (int argc, const char *argv[])
usage();
leave(EXIT_FAILURE);
}
- HDstrcpy(str_flag,opt_arg);
+ str_flag = HDstrdup(opt_arg);
break;
case 'h':
@@ -341,8 +350,6 @@ main (int argc, const char *argv[])
if (fid_src==-1)
{
error_msg("Could not open input file <%s>...Exiting\n", fname_src);
- if (fname_src)
- HDfree(fname_src);
leave(EXIT_FAILURE);
}
@@ -362,10 +369,6 @@ main (int argc, const char *argv[])
if (fid_dst==-1)
{
error_msg("Could not open output file <%s>...Exiting\n", fname_dst);
- if (fname_src)
- HDfree(fname_src);
- if (fname_dst)
- HDfree(fname_dst);
leave(EXIT_FAILURE);
}
@@ -377,8 +380,10 @@ main (int argc, const char *argv[])
{
printf("Copying file <%s> and object <%s> to file <%s> and object <%s>\n",
fname_src, oname_src, fname_dst, oname_dst);
- if (flag)
+ if (flag) {
+ HDassert(str_flag);
printf("Using %s flag\n", str_flag);
+ }
}
@@ -417,14 +422,19 @@ main (int argc, const char *argv[])
} /* end if */
else /* error, if parent groups doesn't already exist in destination file */
{
+ size_t i, len;
+
len = HDstrlen(oname_dst);
+
/* check if all the parents groups exist. skip root group */
for (i = 1; i < len; i++)
{
if ('/'==oname_dst[i])
{
- str_ptr = (char*)HDcalloc((size_t)i+1, sizeof(char));
- HDstrncpy (str_ptr, oname_dst, (size_t)i);
+ char *str_ptr;
+
+ str_ptr = (char *)HDcalloc(i + 1, sizeof(char));
+ HDstrncpy(str_ptr, oname_dst, i);
str_ptr[i]='\0';
if (H5Lexists(fid_dst, str_ptr, H5P_DEFAULT) <= 0)
{
@@ -479,18 +489,7 @@ main (int argc, const char *argv[])
if (H5Fclose(fid_dst)<0)
goto error;
- if (fname_src)
- HDfree(fname_src);
- if (fname_dst)
- HDfree(fname_dst);
- if (oname_dst)
- HDfree(oname_dst);
- if (oname_src)
- HDfree(oname_src);
-
- h5tools_close();
-
- return EXIT_SUCCESS;
+ leave(EXIT_SUCCESS);
error:
printf("Error in copy...Exiting\n");
@@ -505,17 +504,7 @@ error:
H5Fclose(fid_src);
H5Fclose(fid_dst);
} H5E_END_TRY;
- if (fname_src)
- HDfree(fname_src);
- if (fname_dst)
- HDfree(fname_dst);
- if (oname_dst)
- HDfree(oname_dst);
- if (oname_src)
- HDfree(oname_src);
-
- h5tools_close();
- return EXIT_FAILURE;
+ leave(EXIT_FAILURE);
}
diff --git a/tools/h5ls/h5ls.c b/tools/h5ls/h5ls.c
index 7135e4e..832d91f 100644
--- a/tools/h5ls/h5ls.c
+++ b/tools/h5ls/h5ls.c
@@ -115,8 +115,8 @@ typedef struct {
hid_t gid; /* Group ID */
hbool_t symlink_target; /* Whether this is the target of an symbolic link */
symlink_trav_t *symlink_list; /* List of visited symbolic links */
- int base_len; /* Length of base path name, if not root */
- int name_start; /* # of leading characters to strip off path names on output */
+ size_t base_len; /* Length of base path name, if not root */
+ size_t name_start; /* # of leading characters to strip off path names on output */
}iter_t;
/* Command-line switches */
@@ -154,7 +154,6 @@ static struct dispatch_t {
dispatch_g[TYPE].list2 = (LIST2); \
}
-static void display_type(hid_t type, int ind);
static void print_type(h5tools_str_t *buffer, hid_t type, int ind);
static herr_t visit_obj(hid_t file, const char *oname, iter_t *iter);
@@ -342,7 +341,7 @@ print_obj_name(h5tools_str_t *buffer, const iter_t *iter, const char *oname,
int n;
if(show_file_name_g)
- sprintf(fullname, "%s/%s", iter->fname, oname + iter->name_start);
+ HDsnprintf(fullname, sizeof(fullname), "%s/%s", iter->fname, oname + iter->name_start);
else
name = oname + iter->name_start;
@@ -553,14 +552,14 @@ print_precision(h5tools_str_t *buffer, hid_t type, int ind)
/* If the precision is less than the total size then show the precision
* and offset on the following line. Also display the padding
* information. */
- if (8*H5Tget_size(type)!=(prec=H5Tget_precision(type))) {
+ if(8 * H5Tget_size(type) != (prec = H5Tget_precision(type))) {
h5tools_str_append(buffer, "\n%*s(%lu bit%s of precision beginning at bit %lu)",
- ind, "", (unsigned long)prec, 1==prec?"":"s",
+ ind, "", (unsigned long)prec, 1 == prec ? "" : "s",
(unsigned long)H5Tget_offset(type));
H5Tget_pad(type, &plsb, &pmsb);
- if (H5Tget_offset(type)>0) {
- switch (plsb) {
+ if(H5Tget_offset(type) > 0) {
+ switch(plsb) {
case H5T_PAD_ZERO:
plsb_s = "zero";
break;
@@ -575,12 +574,11 @@ print_precision(h5tools_str_t *buffer, hid_t type, int ind)
plsb_s = "unknown";
break;
default:
- ;
break;
}
}
- if (H5Tget_offset(type)+prec<8*H5Tget_size(type)) {
- switch (pmsb) {
+ if((unsigned)H5Tget_offset(type) + prec < 8 * H5Tget_size(type)) {
+ switch(pmsb) {
case H5T_PAD_ZERO:
pmsb_s = "zero";
break;
@@ -595,23 +593,22 @@ print_precision(h5tools_str_t *buffer, hid_t type, int ind)
pmsb_s = "unknown";
break;
default:
- ;
break;
}
}
if (plsb_s || pmsb_s) {
h5tools_str_append(buffer, "\n%*s(", ind, "");
if (plsb_s) {
- nbits = H5Tget_offset(type);
+ nbits = (unsigned)H5Tget_offset(type);
h5tools_str_append(buffer, "%lu %s bit%s at bit 0",
- (unsigned long)nbits, plsb_s, 1==nbits?"":"s");
+ (unsigned long)nbits, plsb_s, 1 == nbits ? "" : "s");
}
if (plsb_s && pmsb_s) h5tools_str_append(buffer, ", ");
if (pmsb_s) {
- nbits = 8*H5Tget_size(type)-(H5Tget_offset(type)+prec);
+ nbits = (8 * H5Tget_size(type)) - ((unsigned)H5Tget_offset(type) + prec);
h5tools_str_append(buffer, "%lu %s bit%s at bit %lu",
- (unsigned long)nbits, pmsb_s, 1==nbits?"":"s",
- (unsigned long)(8*H5Tget_size(type)-nbits));
+ (unsigned long)nbits, pmsb_s, 1 == nbits ? "" : "s",
+ (unsigned long)(8 * H5Tget_size(type) - nbits));
}
h5tools_str_append(buffer, ")");
}
@@ -829,14 +826,18 @@ print_cmpd_type(h5tools_str_t *buffer, hid_t type, int ind)
char *name=NULL; /* member name */
size_t size; /* total size of type in bytes */
hid_t subtype; /* member data type */
- unsigned nmembs; /* number of members */
+ int nmembs; /* number of members */
int n; /* miscellaneous counters */
unsigned i; /* miscellaneous counters */
- if (H5T_COMPOUND!=H5Tget_class(type)) return FALSE;
+ if(H5T_COMPOUND != H5Tget_class(type))
+ return FALSE;
+ nmembs = H5Tget_nmembers(type);
+ if(nmembs <= 0)
+ return FALSE;
+
h5tools_str_append(buffer, "struct {");
- nmembs=H5Tget_nmembers(type);
- for (i=0; i<nmembs; i++) {
+ for(i = 0; i < (unsigned)nmembs; i++) {
/* Name and offset */
name = H5Tget_member_name(type, i);
@@ -877,89 +878,109 @@ print_cmpd_type(h5tools_str_t *buffer, hid_t type, int ind)
static hbool_t
print_enum_type(h5tools_str_t *buffer, hid_t type, int ind)
{
- char **name=NULL; /* member names */
- unsigned char *value=NULL; /* value array */
- unsigned char *copy = NULL; /* a pointer to value array */
- unsigned nmembs; /* number of members */
- int nchars; /* number of output characters */
+ int nmembs; /* number of members */
hid_t super; /* enum base integer type */
- hid_t native=-1; /* native integer data type */
- size_t dst_size; /* destination value type size */
- unsigned i; /* miscellaneous counters */
- size_t j;
- if (H5T_ENUM!=H5Tget_class(type)) return FALSE;
+ if(H5T_ENUM != H5Tget_class(type))
+ return FALSE;
nmembs = H5Tget_nmembers(type);
- HDassert(nmembs>0);
+ if(nmembs < 0)
+ return FALSE;
+
super = H5Tget_super(type);
h5tools_str_append(buffer, "enum ");
- print_type(buffer, super, ind+4);
+ print_type(buffer, super, ind + 4);
h5tools_str_append(buffer, " {");
- /* Determine what data type to use for the native values. To simplify
- * things we entertain three possibilities:
- * 1. long long -- the largest native signed integer
- * 2. unsigned long long -- the largest native unsigned integer
- * 3. raw format */
- if (H5Tget_size(type)<=sizeof(long long)) {
- dst_size = sizeof(long long);
- if (H5T_SGN_NONE==H5Tget_sign(type)) {
- native = H5T_NATIVE_ULLONG;
- } else {
- native = H5T_NATIVE_LLONG;
+ if(nmembs > 0) {
+ char **name; /* member names */
+ unsigned char *value; /* value array */
+ hid_t native = -1; /* native integer data type */
+ size_t dst_size; /* destination value type size */
+ unsigned i; /* miscellaneous counters */
+
+ /* Determine what data type to use for the native values. To simplify
+ * things we entertain three possibilities:
+ * 1. long long -- the largest native signed integer
+ * 2. unsigned long long -- the largest native unsigned integer
+ * 3. raw format */
+ if(H5Tget_size(type) <= sizeof(long long)) {
+ dst_size = sizeof(long long);
+ if(H5T_SGN_NONE == H5Tget_sign(type))
+ native = H5T_NATIVE_ULLONG;
+ else
+ native = H5T_NATIVE_LLONG;
+ } /* end if */
+ else
+ dst_size = H5Tget_size(type);
+
+ /* Get the names and raw values of all members */
+ name = (char **)HDcalloc((size_t)nmembs, sizeof(char *));
+ value = (unsigned char *)HDcalloc((size_t)nmembs, MAX(H5Tget_size(type), dst_size));
+ for(i = 0; i < (unsigned)nmembs; i++) {
+ name[i] = H5Tget_member_name(type, i);
+ H5Tget_member_value(type, i, value + i * H5Tget_size(type));
}
- } else {
- dst_size = H5Tget_size(type);
- }
-
- /* Get the names and raw values of all members */
- name = HDcalloc(nmembs, sizeof(char*));
- value = (unsigned char *)HDcalloc(nmembs, MAX(H5Tget_size(type), dst_size));
- for (i=0; i<nmembs; i++) {
- name[i] = H5Tget_member_name(type, i);
- H5Tget_member_value(type, i, value+i*H5Tget_size(type));
- }
- /* Convert values to native data type */
- if (native>0) H5Tconvert(super, native, nmembs, value, NULL, H5P_DEFAULT);
+ /* Convert values to native data type */
+ if(native > 0)
+ if(H5Tconvert(super, native, (size_t)nmembs, value, NULL, H5P_DEFAULT) < 0) {
+ /* Release resources */
+ for(i = 0; i < (unsigned)nmembs; i++)
+ HDfree(name[i]);
+ HDfree(name);
+ HDfree(value);
- /* Sort members by increasing value */
- /*not implemented yet*/
-
- /* Print members */
- for (i=0; i<nmembs; i++) {
- h5tools_str_append(buffer, "\n%*s", ind+4, "");
- nchars = print_string(buffer, name[i], TRUE);
- h5tools_str_append(buffer, "%*s = ", MAX(0, 16-nchars), "");
+ return FALSE;
+ }
- if (native<0) {
- h5tools_str_append(buffer, "0x");
- for (j=0; j<dst_size; j++)
- h5tools_str_append(buffer, "%02x", value[i*dst_size+j]);
- }
- else if (H5T_SGN_NONE==H5Tget_sign(native)) {
- /*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size"
- *strangely, unless use another pointer "copy".*/
- copy = value+i*dst_size;
- h5tools_str_append(buffer, HSIZE_T_FORMAT, *((unsigned long long*)((void*)copy)));
- }
- else {
- /*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size"
- *strangely, unless use another pointer "copy".*/
- copy = value+i*dst_size;
- h5tools_str_append(buffer, "%"H5_PRINTF_LL_WIDTH"d",
- *((long long*)((void*)copy)));
+ /* Sort members by increasing value */
+ /*not implemented yet*/
+
+ /* Print members */
+ for(i = 0; i < (unsigned)nmembs; i++) {
+ unsigned char *copy; /* a pointer to value array */
+ int nchars; /* number of output characters */
+
+ h5tools_str_append(buffer, "\n%*s", ind+4, "");
+ nchars = print_string(buffer, name[i], TRUE);
+ h5tools_str_append(buffer, "%*s = ", MAX(0, 16 - nchars), "");
+
+ if(native < 0) {
+ size_t j;
+
+ h5tools_str_append(buffer, "0x");
+ for(j = 0; j < dst_size; j++)
+ h5tools_str_append(buffer, "%02x", value[i*dst_size+j]);
+ }
+ else if(H5T_SGN_NONE == H5Tget_sign(native)) {
+ /*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size"
+ *strangely, unless use another pointer "copy".*/
+ copy = value + i * dst_size;
+ h5tools_str_append(buffer, HSIZE_T_FORMAT, *((unsigned long long*)((void*)copy)));
+ }
+ else {
+ /*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size"
+ *strangely, unless use another pointer "copy".*/
+ copy = value + i * dst_size;
+ h5tools_str_append(buffer, "%"H5_PRINTF_LL_WIDTH"d",
+ *((long long*)((void*)copy)));
+ }
}
+
+ /* Release resources */
+ for(i = 0; i < (unsigned)nmembs; i++)
+ HDfree(name[i]);
+ HDfree(name);
+ HDfree(value);
}
+ else
+ h5tools_str_append(buffer, "\n%*s <empty>", ind+4, "");
+
+ h5tools_str_append(buffer, "\n%*s}", ind, "");
- /* Release resources */
- for (i=0; i<nmembs; i++) HDfree(name[i]);
- HDfree(name);
- HDfree(value);
H5Tclose(super);
- if (0==nmembs) h5tools_str_append(buffer, "\n%*s <empty>", ind+4, "");
- h5tools_str_append(buffer, "\n%*s}", ind, "");
return TRUE;
}
@@ -1189,10 +1210,11 @@ print_array_type(h5tools_str_t *buffer, hid_t type, int ind)
int ndims, i;
hsize_t *dims=NULL;
- if (H5T_ARRAY!=H5Tget_class(type)) return FALSE;
+ if (H5T_ARRAY!=H5Tget_class(type))
+ return FALSE;
ndims = H5Tget_array_ndims(type);
if (ndims) {
- dims = (hsize_t *)HDmalloc(ndims*sizeof(dims[0]));
+ dims = (hsize_t *)HDmalloc((unsigned)ndims * sizeof(dims[0]));
H5Tget_array_dims2(type, dims);
/* Print dimensions */
@@ -1202,9 +1224,8 @@ print_array_type(h5tools_str_t *buffer, hid_t type, int ind)
HDfree(dims);
}
- else {
+ else
h5tools_str_append(buffer, " [SCALAR]\n", rawoutstream);
- }
/* Print parent type */
@@ -1390,7 +1411,7 @@ dump_dataset_values(hid_t dset)
outputformat.line_per_line = 1;
}
else {
- outputformat.line_ncols = width_g;
+ outputformat.line_ncols = (unsigned)width_g;
}
if (label_g) outputformat.cmpd_name = "%s=";
outputformat.line_pre = " %s ";
@@ -1412,9 +1433,9 @@ dump_dataset_values(hid_t dset)
}
outputformat.arr_linebreak = 0;
/* Floating point types should display full precision */
- sprintf(fmt_float, "%%1.%dg", FLT_DIG);
+ HDsnprintf(fmt_float, sizeof(fmt_float), "%%1.%dg", FLT_DIG);
outputformat.fmt_float = fmt_float;
- sprintf(fmt_double, "%%1.%dg", DBL_DIG);
+ HDsnprintf(fmt_double, sizeof(fmt_double), "%%1.%dg", DBL_DIG);
outputformat.fmt_double = fmt_double;
if (hexdump_g) {
@@ -1428,8 +1449,7 @@ dump_dataset_values(hid_t dset)
outputformat.ascii = TRUE;
outputformat.elmt_suf1 = "";
outputformat.elmt_suf2 = "";
- strcpy(string_prefix, outputformat.line_pre);
- strcat(string_prefix, "\"");
+ HDsnprintf(string_prefix, sizeof(string_prefix), "%s\"", outputformat.line_pre);
outputformat.line_pre = string_prefix;
outputformat.line_suf = "\"";
}
@@ -1487,7 +1507,6 @@ list_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo,
size_t need;
int ndims;
int i;
- int n;
void *buf;
H5S_class_t space_type;
hsize_t curr_pos = 0; /* total data element position */
@@ -1502,7 +1521,7 @@ list_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo,
h5tools_str_reset(&buffer);
h5tools_str_append(&buffer, " Attribute: ");
- n = print_string(&buffer, attr_name, TRUE);
+ print_string(&buffer, attr_name, TRUE);
if((attr = H5Aopen(obj, attr_name, H5P_DEFAULT))) {
space = H5Aget_space(attr);
@@ -1535,6 +1554,7 @@ list_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo,
h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, info->line_ncols, 0, 0);
break;
+ case H5S_NO_CLASS:
default:
/* Unknown dataspace type */
h5tools_str_append(&buffer, " unknown\n");
@@ -1570,7 +1590,7 @@ list_attr(hid_t obj, const char *attr_name, const H5A_info_t UNUSED *ainfo,
outputformat.str_repeat = 8;
}
- outputformat.line_ncols = width_g;
+ outputformat.line_ncols = (unsigned)width_g;
if(label_g)
outputformat.cmpd_name = "%s=";
if(string_g && 1==H5Tget_size(type) &&
@@ -1777,7 +1797,7 @@ dataset_list2(hid_t dset, const char UNUSED *name)
}
/* Print total raw storage size */
- total = H5Sget_simple_extent_npoints(space) * H5Tget_size(type);
+ total = (hsize_t)H5Sget_simple_extent_npoints(space) * H5Tget_size(type);
used = H5Dget_storage_size(dset);
tclass = H5Tget_class(type);
h5tools_str_append(&buffer, " %-10s ", "Storage:");
@@ -1795,13 +1815,24 @@ dataset_list2(hid_t dset, const char UNUSED *name)
}
break;
+ case H5T_NO_CLASS:
+ case H5T_INTEGER:
+ case H5T_FLOAT:
+ case H5T_TIME:
+ case H5T_STRING:
+ case H5T_BITFIELD:
+ case H5T_OPAQUE:
+ case H5T_COMPOUND:
+ case H5T_ENUM:
+ case H5T_ARRAY:
+ case H5T_NCLASSES:
default:
h5tools_str_append(&buffer, HSIZE_T_FORMAT" logical byte%s, "HSIZE_T_FORMAT" allocated byte%s",
total, 1==total?"":"s",
used, 1==used?"":"s");
if (used>0)
{
- utilization = (total*100.0)/used;
+ utilization = ((double)total * (double)100.0f) / (double)used;
h5tools_str_append(&buffer, ", %1.2f%% utilization", utilization);
}
}
@@ -1811,7 +1842,8 @@ dataset_list2(hid_t dset, const char UNUSED *name)
/* Print information about external strorage */
if((nf = H5Pget_external_count(dcpl)) > 0) {
for(i = 0, max_len = 0; i < nf; i++) {
- H5Pget_external(dcpl, (unsigned)i, sizeof(f_name), f_name, NULL, NULL);
+ if(H5Pget_external(dcpl, (unsigned)i, sizeof(f_name), f_name, NULL, NULL) < 0)
+ continue;
n = print_string(NULL, f_name, TRUE);
max_len = MAX(max_len, n);
} /* end for */
@@ -1857,7 +1889,7 @@ dataset_list2(hid_t dset, const char UNUSED *name)
filt_id = H5Pget_filter2(dcpl, (unsigned)i, &filt_flags, &cd_nelmts,
cd_values, sizeof(f_name), f_name, NULL);
f_name[sizeof(f_name) - 1] = '\0';
- sprintf(s, "Filter-%d:", i);
+ HDsnprintf(s, sizeof(s), "Filter-%d:", i);
h5tools_str_append(&buffer, " %-10s %s-%u %s {", s,
(f_name[0] ? f_name : "method"),
(unsigned)filt_id,
@@ -2054,7 +2086,7 @@ list_obj(const char *name, const H5O_info_t *oinfo, const char *first_seen, void
if (cmt_bufsize > 0) {
comment = (char *)HDmalloc((size_t)cmt_bufsize + 1); /* new_size including null terminator */
if(comment) {
- cmt_bufsize = H5Oget_comment(obj, comment, cmt_bufsize);
+ cmt_bufsize = H5Oget_comment(obj, comment, (size_t)cmt_bufsize);
if(cmt_bufsize > 0) {
comment[cmt_bufsize] = 0;
h5tools_str_reset(&buffer);
@@ -2267,6 +2299,9 @@ list_lnk(const char *name, const H5L_info_t *linfo, void *_iter)
}
break;
+ case H5L_TYPE_ERROR:
+ case H5L_TYPE_HARD:
+ case H5L_TYPE_MAX:
default:
h5tools_str_append(&buffer, "UD Link {cannot follow UD links}\n");
h5tools_render_element(rawoutstream, info, &ctx, &buffer, &curr_pos, info->line_ncols, 0, 0);
@@ -2457,7 +2492,7 @@ get_width(void)
static hbool_t
is_valid_args(void)
{
- herr_t ret = TRUE;
+ hbool_t ret = TRUE;
if(recursive_g && grp_literal_g)
{
diff --git a/tools/h5repack/CMakeLists.txt b/tools/h5repack/CMakeLists.txt
index 156f6d8..06c6b71 100644
--- a/tools/h5repack/CMakeLists.txt
+++ b/tools/h5repack/CMakeLists.txt
@@ -881,6 +881,18 @@ ADD_H5_VERIFY_TEST (error3 "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 H5S_UNLIM
# file input - should not fail
ADD_H5_TEST (error4 "TEST" h5repack_layout3.h5 -f NONE)
+#--------------------------------------------------------------------------
+# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset
+# (dset size < 64K) and with unlimited max dims on a condition as follow.
+# (HDFFV-8214)
+#--------------------------------------------------------------------------
+# chunk dim is bigger than dataset dim. should succeed.
+ADD_H5_VERIFY_TEST (ckdim_biger "TEST" 0 h5repack_layout3.h5 chunk_unlimit2 CONTI -l chunk_unlimit2:CONTI)
+# chunk dim is smaller than dataset dim. should succeed.
+ADD_H5_VERIFY_TEST (ckdim_smaller "TEST" 0 h5repack_layout3.h5 chunk_unlimit3 CONTI -l chunk_unlimit3:CONTI)
+
+
+
# Native option
# Do not use FILE1, as the named dtype will be converted to native, and h5diff will
# report a difference.
diff --git a/tools/h5repack/h5repack.sh.in b/tools/h5repack/h5repack.sh.in
index dc90426..14e1d04 100644
--- a/tools/h5repack/h5repack.sh.in
+++ b/tools/h5repack/h5repack.sh.in
@@ -891,6 +891,18 @@ VERIFY_LAYOUT_DSET error3 h5repack_layout3.h5 chunk_unlimit3 H5S_UNLIMITED -f ch
# file input - should not fail
TOOLTEST error4 h5repack_layout3.h5 -f NONE
+#--------------------------------------------------------------------------
+# Test base: Convert CHUNK to CONTI for a chunked dataset with small dataset
+# (dset size < 64K) and with unlimited max dims on a condition as follow.
+# (HDFFV-8214)
+#--------------------------------------------------------------------------
+
+# chunk dim is bigger than dataset dim. should succeed.
+VERIFY_LAYOUT_DSET ckdim_biger h5repack_layout3.h5 chunk_unlimit2 CONTI -l chunk_unlimit2:CONTI
+# chunk dim is smaller than dataset dim. should succeed.
+VERIFY_LAYOUT_DSET ckdim_smaller h5repack_layout3.h5 chunk_unlimit3 CONTI -l chunk_unlimit3:CONTI
+
+
# Native option
# Do not use FILE1, as the named dtype will be converted to native, and h5diff will
# report a difference.
diff --git a/tools/h5repack/h5repack_copy.c b/tools/h5repack/h5repack_copy.c
index 02337fd..f9dd334 100644
--- a/tools/h5repack/h5repack_copy.c
+++ b/tools/h5repack/h5repack_copy.c
@@ -1017,16 +1017,6 @@ int do_copy_objects(hid_t fidin,
/* get the storage size of the input dataset */
dsize_in=H5Dget_storage_size(dset_in);
- /* check for small size datasets (less than 1k) except
- * changing to COMPACT. For the reference, COMPACT is limited
- * by size 64K by library.
- */
- if (options->layout_g != H5D_COMPACT)
- {
- if ( size_dset < options->min_comp )
- apply_s=0;
- }
-
/* apply the filter */
if (apply_s)
{
diff --git a/tools/lib/CMakeLists.txt b/tools/lib/CMakeLists.txt
index ce8a5fa..ac86e8a 100644
--- a/tools/lib/CMakeLists.txt
+++ b/tools/lib/CMakeLists.txt
@@ -38,14 +38,14 @@ SET (H5_TOOLS_LIB_HDRS
ADD_LIBRARY (${HDF5_TOOLS_LIB_TARGET} ${LIB_TYPE} ${H5_TOOLS_LIB_SRCS} ${H5_TOOLS_LIB_HDRS})
TARGET_LINK_LIBRARIES (${HDF5_TOOLS_LIB_TARGET} ${HDF5_LIB_TARGET})
-SET_GLOBAL_VARIABLE( HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_TOOLS_LIB_TARGET}")
+SET_GLOBAL_VARIABLE(HDF5_LIBRARIES_TO_EXPORT "${HDF5_LIBRARIES_TO_EXPORT};${HDF5_TOOLS_LIB_TARGET}")
H5_SET_LIB_OPTIONS (
${HDF5_TOOLS_LIB_TARGET} ${HDF5_TOOLS_LIB_NAME}
${LIB_TYPE}
HDF5_TOOLS_LIB_NAME_RELEASE
HDF5_TOOLS_LIB_NAME_DEBUG
)
-#SET_TARGET_PROPERTIES (hdf5_tools PROPERTIES COMPILE_DEFINITIONS H5DIFF_DEBUG)
+#SET_TARGET_PROPERTIES (${HDF5_TOOLS_LIB_TARGET} PROPERTIES COMPILE_DEFINITIONS H5DIFF_DEBUG)
SET_TARGET_PROPERTIES (${HDF5_TOOLS_LIB_TARGET} PROPERTIES FOLDER libraries/tools)
##############################################################################
diff --git a/tools/lib/h5diff.c b/tools/lib/h5diff.c
index 2b4fa29..1752155 100644
--- a/tools/lib/h5diff.c
+++ b/tools/lib/h5diff.c
@@ -241,7 +241,6 @@ static int is_exclude_path (char * path, h5trav_type_t type, diff_opt_t *options
struct exclude_path_list * exclude_path_ptr;
int ret_cmp;
int ret = 0;
- int len_grp;
/* check if exclude path option is given */
if (!options->exclude_path)
@@ -260,6 +259,8 @@ static int is_exclude_path (char * path, h5trav_type_t type, diff_opt_t *options
HDstrlen(exclude_path_ptr->obj_path));
if (ret_cmp == 0) /* found matching members */
{
+ size_t len_grp;
+
/* check if given path belong to an excluding group, if so
* exclude it as well.
* This verifies if “/grp1/dset1” is only under “/grp1”, but
@@ -338,7 +339,6 @@ static void free_exclude_path_list(diff_opt_t *options)
*------------------------------------------------------------------------*/
static void build_match_list (const char *objname1, trav_info_t *info1, const char *objname2, trav_info_t *info2, trav_table_t ** table_out, diff_opt_t *options)
{
- unsigned i;
size_t curr1 = 0;
size_t curr2 = 0;
unsigned infile[2];
@@ -346,8 +346,8 @@ static void build_match_list (const char *objname1, trav_info_t *info1, const ch
char * path2_lp;
h5trav_type_t type1_l;
h5trav_type_t type2_l;
- int path1_offset = 0;
- int path2_offset = 0;
+ size_t path1_offset = 0;
+ size_t path2_offset = 0;
int cmp;
trav_table_t *table;
size_t idx;
@@ -616,8 +616,8 @@ hsize_t h5diff(const char *fname1,
int i;
int l_ret1 = -1;
int l_ret2 = -1;
- const char * obj1fullname = NULL;
- const char * obj2fullname = NULL;
+ char * obj1fullname = NULL;
+ char * obj2fullname = NULL;
int both_objs_grp = 0;
/* init to group type */
h5trav_type_t obj1type = H5TRAV_TYPE_GROUP;
@@ -701,26 +701,26 @@ hsize_t h5diff(const char *fname1,
/* make the given object1 fullpath, start with "/" */
if (HDstrncmp(objname1, "/", 1))
{
- HDstrcpy((char *)obj1fullname, "/");
- HDstrcat((char *)obj1fullname, objname1);
+ HDstrcpy(obj1fullname, "/");
+ HDstrcat(obj1fullname, objname1);
}
else
- HDstrcpy((char *)obj1fullname, objname1);
+ HDstrcpy(obj1fullname, objname1);
/* make the given object2 fullpath, start with "/" */
if (HDstrncmp(objname2, "/", 1))
{
- HDstrcpy((char *)obj2fullname, "/");
- HDstrcat((char *)obj2fullname, objname2);
+ HDstrcpy(obj2fullname, "/");
+ HDstrcat(obj2fullname, objname2);
}
else
- HDstrcpy((char *)obj2fullname, objname2);
+ HDstrcpy(obj2fullname, objname2);
/*----------------------------------------------------------
* check if obj1 is root, group, single object or symlink
*/
h5difftrace("h5diff check if obj1 is root, group, single object or symlink\n");
- if(!HDstrcmp((char *)obj1fullname, "/"))
+ if(!HDstrcmp(obj1fullname, "/"))
{
obj1type = H5TRAV_TYPE_GROUP;
}
@@ -840,10 +840,10 @@ hsize_t h5diff(const char *fname1,
h5difftrace("h5diff no object specified\n");
/* set root group */
obj1fullname = (char*)HDcalloc(2, sizeof(char));
- HDstrcat((char *)obj1fullname, "/");
+ HDstrcat(obj1fullname, "/");
obj1type = H5TRAV_TYPE_GROUP;
obj2fullname = (char*)HDcalloc(2, sizeof(char));
- HDstrcat((char *)obj2fullname, "/");
+ HDstrcat(obj2fullname, "/");
obj2type = H5TRAV_TYPE_GROUP;
}
@@ -1078,9 +1078,9 @@ out:
/* free buffers */
if (obj1fullname)
- HDfree((char *)obj1fullname);
+ HDfree(obj1fullname);
if (obj2fullname)
- HDfree((char *)obj2fullname);
+ HDfree(obj2fullname);
/* free link info buffer */
if (trg_linfo1.trg_path)
diff --git a/tools/lib/h5diff.h b/tools/lib/h5diff.h
index 2530805..9e1c8bb 100644
--- a/tools/lib/h5diff.h
+++ b/tools/lib/h5diff.h
@@ -196,210 +196,5 @@ int print_objname(diff_opt_t *options, hsize_t nfound);
void do_print_objname (const char *OBJ, const char *path1, const char *path2, diff_opt_t * opts);
void do_print_attrname (const char *attr, const char *path1, const char *path2);
-
-/*-------------------------------------------------------------------------
- * XCAO, 11/10/2010
- * added to improve performance for compound datasets
- */
-typedef struct mcomp_t
-{
- int n; /* number of members */
- hid_t *ids; /* member type id */
- unsigned char *flags;
- size_t *offsets;
- struct mcomp_t **m; /* members */
-}mcomp_t;
-
-hsize_t diff_datum(void *_mem1,
- void *_mem2,
- hid_t m_type,
- hsize_t i,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- hid_t container1_id,
- hid_t container2_id, /*where the reference came from*/
- int *ph, /*print header */
- mcomp_t *members); /*compound members */
-
-
-
-hsize_t diff_float(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-hsize_t diff_double(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-#if H5_SIZEOF_LONG_DOUBLE !=0
-
-hsize_t diff_ldouble(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-#endif
-
-hsize_t diff_schar(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-hsize_t diff_uchar(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-hsize_t diff_short(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-hsize_t diff_ushort(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-hsize_t diff_int(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-hsize_t diff_uint(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-hsize_t diff_long(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-hsize_t diff_ulong(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-hsize_t diff_llong(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
-hsize_t diff_ullong(unsigned char *mem1,
- unsigned char *mem2,
- hsize_t nelmts,
- hsize_t hyper_start,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- int *ph);
-
#endif /* H5DIFF_H__ */
diff --git a/tools/lib/h5diff_array.c b/tools/lib/h5diff_array.c
index 1e7f88b..528fc40 100644
--- a/tools/lib/h5diff_array.c
+++ b/tools/lib/h5diff_array.c
@@ -36,7 +36,6 @@
#endif
#define I_FORMAT "%-15d %-15d %-15d\n"
-#define C_FORMAT "%-16c %-17c\n"
#define S_FORMAT "%-16s %-17s\n"
#define UI_FORMAT "%-15u %-15u %-15u\n"
#define LI_FORMAT "%-15ld %-15ld %-15ld\n"
@@ -101,43 +100,44 @@
*-------------------------------------------------------------------------
*/
-static int not_comparable;
+static hbool_t not_comparable;
-#define PER(A,B) { per=-1; \
- not_comparable=0; \
- both_zero=0; \
- if (A==0 && B==0) \
- both_zero=1; \
- if (A!=0) \
- per = (double)ABS( ( double)(B-A) / (double)A ); \
+#define PER(A,B) { \
+ per = -1; \
+ not_comparable = FALSE; \
+ both_zero = FALSE; \
+ if(0 == (A) && 0 == (B)) \
+ both_zero = TRUE; \
+ if(0 != (A)) \
+ per = (double)ABS((double)(B - A) / (double)A); \
else \
- not_comparable=1; \
+ not_comparable = TRUE; \
}
-#define PER_UNSIGN(TYPE,A,B) { per=-1; \
- not_comparable=0; \
- both_zero=0; \
- if (A==0 && B==0) \
- both_zero=1; \
- if (A!=0) \
- per = ABS((double)((TYPE)(B-A)) / (double)A) ; \
+#define PER_UNSIGN(TYPE,A,B) { \
+ per = -1; \
+ not_comparable = FALSE; \
+ both_zero = FALSE; \
+ if(A == 0 && B == 0) \
+ both_zero = TRUE; \
+ if(A != 0) \
+ per = ABS((double)((TYPE)(B - A)) / (double)A) ; \
else \
- not_comparable=1; \
+ not_comparable = TRUE; \
}
-#define BOTH_ZERO(A,B) { both_zero=0; \
- if (A==0 && B==0) \
- both_zero=1; \
-}
+# define PDIFF(a,b) ( (b>a) ? (b-a) : (a-b))
-#define IS_ZERO(A) { is_zero=0; \
- if (A==0) \
- is_zero=1; \
-}
+typedef struct mcomp_t
+{
+ unsigned n; /* number of members */
+ hid_t *ids; /* member type id */
+ size_t *offsets;
+ struct mcomp_t **m; /* members */
+}mcomp_t;
-# define PDIFF(a,b) ( (b>a) ? (b-a) : (a-b))
/*-------------------------------------------------------------------------
* local prototypes
@@ -146,7 +146,7 @@ static int not_comparable;
static hsize_t diff_region(hid_t obj1_id, hid_t obj2_id,hid_t region1_id, hid_t region2_id, diff_opt_t *options);
static hbool_t all_zero(const void *_mem, size_t size);
static int ull2float(unsigned long long ull_value, float *f_value);
-static hsize_t character_compare(unsigned char *mem1,unsigned char *mem2,hsize_t i,unsigned u,int rank,hsize_t *dims,hsize_t *acc,hsize_t *pos,diff_opt_t *options,const char *obj1,const char *obj2,int *ph);
+static hsize_t character_compare(char *mem1,char *mem2,hsize_t i,unsigned u,int rank,hsize_t *dims,hsize_t *acc,hsize_t *pos,diff_opt_t *options,const char *obj1,const char *obj2,int *ph);
static hsize_t character_compare_opt(unsigned char *mem1,unsigned char *mem2,hsize_t i,int rank,hsize_t *dims,hsize_t *acc,hsize_t *pos,diff_opt_t *options,const char *obj1,const char *obj2,int *ph);
static hbool_t equal_float(float value, float expected, diff_opt_t *options);
static hbool_t equal_double(double value, double expected, diff_opt_t *options);
@@ -157,6 +157,179 @@ static int print_data(diff_opt_t *options);
static void print_pos(int *ph,int pp,hsize_t curr_pos,hsize_t *acc,hsize_t *pos,int rank,hsize_t *dims,const char *obj1,const char *obj2 );
static void print_char_pos(int *ph,int pp,hsize_t curr_pos,unsigned u,hsize_t *acc,hsize_t *pos,int rank,hsize_t *dims,const char *obj1,const char *obj2 );
static void h5diff_print_char(char ch);
+static hsize_t diff_datum(void *_mem1,
+ void *_mem2,
+ hid_t m_type,
+ hsize_t i,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ hid_t container1_id,
+ hid_t container2_id, /*where the reference came from*/
+ int *ph, /*print header */
+ mcomp_t *members); /*compound members */
+static hsize_t diff_float(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+static hsize_t diff_double(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+#if H5_SIZEOF_LONG_DOUBLE !=0
+static hsize_t diff_ldouble(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+#endif
+static hsize_t diff_schar(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+static hsize_t diff_uchar(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+static hsize_t diff_short(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+static hsize_t diff_ushort(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+static hsize_t diff_int(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+static hsize_t diff_uint(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+static hsize_t diff_long(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+static hsize_t diff_ulong(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+static hsize_t diff_llong(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
+static hsize_t diff_ullong(unsigned char *mem1,
+ unsigned char *mem2,
+ hsize_t nelmts,
+ hsize_t hyper_start,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ int *ph);
/*-------------------------------------------------------------------------
@@ -180,7 +353,7 @@ typedef enum dtype_t
} dtype_t;
#endif
-static int my_isnan(dtype_t type, void *val);
+static hbool_t my_isnan(dtype_t type, void *val);
/*-------------------------------------------------------------------------
* XCAO, 11/10/2010
@@ -260,6 +433,9 @@ hsize_t diff_array( void *_mem1,
switch (type_class)
{
+ case H5T_NO_CLASS:
+ case H5T_TIME:
+ case H5T_NCLASSES:
default:
HDassert(0);
break;
@@ -387,21 +563,21 @@ hsize_t diff_array( void *_mem1,
* Dereference the object and compare the type (basic object type).
*-------------------------------------------------------------------------
*/
-hsize_t diff_datum(void *_mem1,
- void *_mem2,
- hid_t m_type,
- hsize_t i,
- int rank,
- hsize_t *dims,
- hsize_t *acc,
- hsize_t *pos,
- diff_opt_t *options,
- const char *obj1,
- const char *obj2,
- hid_t container1_id,
- hid_t container2_id, /*where the reference came from*/
- int *ph, /*print header */
- mcomp_t *members) /*compound members */
+static hsize_t diff_datum(void *_mem1,
+ void *_mem2,
+ hid_t m_type,
+ hsize_t i,
+ int rank,
+ hsize_t *dims,
+ hsize_t *acc,
+ hsize_t *pos,
+ diff_opt_t *options,
+ const char *obj1,
+ const char *obj2,
+ hid_t container1_id,
+ hid_t container2_id, /*where the reference came from*/
+ int *ph, /*print header */
+ mcomp_t *members) /*compound members */
{
unsigned char *mem1 = (unsigned char*)_mem1;
unsigned char *mem2 = (unsigned char*)_mem2;
@@ -411,19 +587,19 @@ hsize_t diff_datum(void *_mem1,
H5T_sign_t type_sign;
H5T_class_t type_class;
size_t offset;
- int nmembs;
- int j;
+ unsigned nmembs;
+ unsigned j;
hsize_t nelmts;
size_t size=0;
- int iszero1;
- int iszero2;
+ hbool_t iszero1;
+ hbool_t iszero2;
hid_t obj1_id;
hid_t obj2_id;
hsize_t nfound=0; /* differences found */
int ret=0; /* check return error */
float f1, f2;
double per;
- int both_zero;
+ hbool_t both_zero;
h5difftrace("diff_datum start\n");
type_size = H5Tget_size( m_type );
@@ -442,10 +618,10 @@ hsize_t diff_datum(void *_mem1,
switch (H5Tget_class(m_type))
{
- default:
- HDassert(0);
- break;
+ case H5T_NO_CLASS:
case H5T_TIME:
+ case H5T_NCLASSES:
+ default:
HDassert(0);
break;
@@ -464,8 +640,8 @@ hsize_t diff_datum(void *_mem1,
memb_type = members->ids[j];
nfound+=diff_datum(
- mem1+offset,
- mem2+offset,
+ mem1 + offset,
+ mem2 + offset,
memb_type,
i,
rank,
@@ -508,10 +684,10 @@ hsize_t diff_datum(void *_mem1,
else
{
/* Get pointer to first string */
- s1 = mem1;
+ s1 = (char *)mem1;
size1 = H5Tget_size(m_type);
/* Get pointer to second string */
- s2 = mem2;
+ s2 = (char *)mem2;
size2 = H5Tget_size(m_type);
}
@@ -634,11 +810,11 @@ hsize_t diff_datum(void *_mem1,
*/
err1 = H5Tenum_nameof(m_type, mem1, enum_name1, sizeof enum_name1);
if(err1 < 0)
- strcpy(enum_name1, "**INVALID VALUE**");
+ HDsnprintf(enum_name1, sizeof(enum_name1), "**INVALID VALUE**");
err2 = H5Tenum_nameof(m_type, mem2, enum_name2, sizeof enum_name2);
if(err2 < 0)
- strcpy(enum_name2, "**INVALID VALUE**");
+ HDsnprintf(enum_name2, sizeof(enum_name2), "**INVALID VALUE**");
if(err1 < 0 || err2 < 0)
{
@@ -702,7 +878,8 @@ hsize_t diff_datum(void *_mem1,
{
hsize_t adims[H5S_MAX_RANK];
- hsize_t ndims;
+ int ndims;
+
/* get the array's base datatype for each element */
memb_type = H5Tget_super(m_type);
size = H5Tget_size(memb_type);
@@ -711,7 +888,7 @@ hsize_t diff_datum(void *_mem1,
HDassert(ndims >= 1 && ndims <= H5S_MAX_RANK);
/* calculate the number of array elements */
- for (u = 0, nelmts = 1; u <ndims; u++)
+ for (u = 0, nelmts = 1; u < (unsigned)ndims; u++)
nelmts *= adims[u];
for (u = 0; u < nelmts; u++)
{
@@ -861,22 +1038,22 @@ hsize_t diff_datum(void *_mem1,
/* get the number of sequence elements */
nelmts = ((hvl_t *)mem1)->len;
- for (j = 0; j < (int)nelmts; j++)
- nfound+=diff_datum(
- ((char *)(((hvl_t *)mem1)->p)) + j * size,
- ((char *)(((hvl_t *)mem2)->p)) + j * size, /* offset */
- memb_type,
- i, /* index position */
- rank,
- dims,
- acc,
- pos,
- options,
- obj1,
- obj2,
- container1_id,
- container2_id,
- ph, members);
+ for (j = 0; j < nelmts; j++)
+ nfound += diff_datum(
+ ((char *)(((hvl_t *)mem1)->p)) + j * size,
+ ((char *)(((hvl_t *)mem2)->p)) + j * size, /* offset */
+ memb_type,
+ i, /* index position */
+ rank,
+ dims,
+ acc,
+ pos,
+ options,
+ obj1,
+ obj2,
+ container1_id,
+ container2_id,
+ ph, members);
H5Tclose(memb_type);
@@ -1421,7 +1598,7 @@ hsize_t diff_datum(void *_mem1,
{
print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(I_FORMAT_P_NOTCOMP,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint));
+ parallel_print(UI_FORMAT_P_NOTCOMP,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint));
}
nfound++;
}
@@ -1434,7 +1611,7 @@ hsize_t diff_datum(void *_mem1,
{
print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(I_FORMAT_P,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint),per);
+ parallel_print(UI_FORMAT_P,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint),per);
}
nfound++;
}
@@ -1450,7 +1627,7 @@ hsize_t diff_datum(void *_mem1,
{
print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(I_FORMAT_P_NOTCOMP,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint));
+ parallel_print(UI_FORMAT_P_NOTCOMP,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint));
}
nfound++;
}
@@ -1463,7 +1640,7 @@ hsize_t diff_datum(void *_mem1,
{
print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(I_FORMAT_P,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint),per);
+ parallel_print(UI_FORMAT_P,temp1_uint,temp2_uint,PDIFF(temp1_uint,temp2_uint),per);
}
nfound++;
}
@@ -1904,8 +2081,8 @@ hsize_t diff_datum(void *_mem1,
{
float temp1_float;
float temp2_float;
- int isnan1=0;
- int isnan2=0;
+ hbool_t isnan1 = FALSE;
+ hbool_t isnan2 = FALSE;
HDassert(type_size==sizeof(float));
@@ -1933,29 +2110,29 @@ hsize_t diff_datum(void *_mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
- if (ABS(temp1_float-temp2_float) > options->delta)
+ if (ABS(temp1_float-temp2_float) > (float)options->delta)
{
if ( print_data(options) )
{
print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT,(double)temp1_float,(double)temp2_float, (double)ABS(temp1_float - temp2_float));
}
nfound++;
}
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float));
}
nfound++;
@@ -1979,7 +2156,7 @@ hsize_t diff_datum(void *_mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
PER(temp1_float,temp2_float);
@@ -1990,35 +2167,35 @@ hsize_t diff_datum(void *_mem1,
{
print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT_P_NOTCOMP,temp1_float,temp2_float,ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT_P_NOTCOMP, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float));
}
nfound++;
}
else
- if ( per > options->percent && ABS(temp1_float-temp2_float) > options->delta )
+ if ( per > options->percent && (double)ABS(temp1_float-temp2_float) > options->delta )
{
if ( print_data(options) )
{
print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT_P,temp1_float,temp2_float,
- ABS(temp1_float-temp2_float),
- ABS(1-temp2_float/temp1_float));
+ parallel_print(F_FORMAT_P, (double)temp1_float, (double)temp2_float,
+ (double)ABS(temp1_float - temp2_float),
+ (double)ABS(1 - temp2_float / temp1_float));
}
nfound++;
}
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float));
}
nfound++;
@@ -2044,7 +2221,7 @@ hsize_t diff_datum(void *_mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
PER(temp1_float,temp2_float);
@@ -2055,8 +2232,8 @@ hsize_t diff_datum(void *_mem1,
{
print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT_P_NOTCOMP,temp1_float,temp2_float,
- ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT_P_NOTCOMP, (double)temp1_float, (double)temp2_float,
+ (double)ABS(temp1_float - temp2_float));
}
nfound++;
}
@@ -2069,22 +2246,22 @@ hsize_t diff_datum(void *_mem1,
{
print_pos(ph,1,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT_P,temp1_float,temp2_float,
- ABS(temp1_float-temp2_float),
- ABS(1-temp2_float/temp1_float));
+ parallel_print(F_FORMAT_P, (double)temp1_float, (double)temp2_float,
+ (double)ABS(temp1_float - temp2_float),
+ (double)ABS(1 - temp2_float / temp1_float));
}
nfound++;
}
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float));
}
nfound++;
@@ -2102,7 +2279,7 @@ hsize_t diff_datum(void *_mem1,
{
print_pos(ph,0,i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float));
}
nfound++;
}
@@ -2117,8 +2294,8 @@ hsize_t diff_datum(void *_mem1,
{
double temp1_double;
double temp2_double;
- int isnan1=0;
- int isnan2=0;
+ hbool_t isnan1 = FALSE;
+ hbool_t isnan2 = FALSE;
HDassert(type_size==sizeof(double));
@@ -2144,7 +2321,7 @@ hsize_t diff_datum(void *_mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
if (ABS(temp1_double-temp2_double) > options->delta)
@@ -2160,7 +2337,7 @@ hsize_t diff_datum(void *_mem1,
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -2191,7 +2368,7 @@ hsize_t diff_datum(void *_mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
PER(temp1_double,temp2_double);
@@ -2225,7 +2402,7 @@ hsize_t diff_datum(void *_mem1,
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -2256,7 +2433,7 @@ hsize_t diff_datum(void *_mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
PER(temp1_double,temp2_double);
@@ -2291,7 +2468,7 @@ hsize_t diff_datum(void *_mem1,
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -2331,8 +2508,8 @@ hsize_t diff_datum(void *_mem1,
{
long double temp1_double;
long double temp2_double;
- int isnan1=0;
- int isnan2=0;
+ hbool_t isnan1 = FALSE;
+ hbool_t isnan2 = FALSE;
HDassert(type_size==sizeof(long double));
@@ -2360,7 +2537,7 @@ hsize_t diff_datum(void *_mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
if (ABS(temp1_double-temp2_double) > options->delta)
@@ -2375,7 +2552,7 @@ hsize_t diff_datum(void *_mem1,
}
} /* NaN */
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -2405,7 +2582,7 @@ hsize_t diff_datum(void *_mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
PER(temp1_double,temp2_double);
@@ -2439,7 +2616,7 @@ hsize_t diff_datum(void *_mem1,
} /* NaN */
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -2469,7 +2646,7 @@ hsize_t diff_datum(void *_mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
PER(temp1_double,temp2_double);
@@ -2504,7 +2681,7 @@ hsize_t diff_datum(void *_mem1,
} /* NaN */
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -2671,14 +2848,15 @@ hsize_t diff_region(hid_t obj1_id,
*-------------------------------------------------------------------------
*/
if(nblocks1 > 0) {
- alloc_size = nblocks1 * ndims1 * 2 * sizeof(ptdata1[0]);
+ HDassert(ndims1 > 0);
+ alloc_size = (hsize_t)nblocks1 * (unsigned)ndims1 * 2 * sizeof(ptdata1[0]);
HDassert(alloc_size == (hsize_t)((size_t)alloc_size)); /*check for overflow*/
- ptdata1 = HDmalloc((size_t)alloc_size);
+ ptdata1 = (hsize_t *)HDmalloc((size_t)alloc_size);
H5_CHECK_OVERFLOW(nblocks1, hssize_t, hsize_t);
H5Sget_select_hyper_blocklist(region1_id, (hsize_t)0, (hsize_t)nblocks1, ptdata1);
- ptdata2 = HDmalloc((size_t)alloc_size);
+ ptdata2 = (hsize_t *)HDmalloc((size_t)alloc_size);
H5_CHECK_OVERFLOW(nblocks2, hssize_t, hsize_t);
H5Sget_select_hyper_blocklist(region2_id, (hsize_t)0, (hsize_t)nblocks2, ptdata2);
@@ -2726,14 +2904,14 @@ hsize_t diff_region(hid_t obj1_id,
*-------------------------------------------------------------------------
*/
if(npoints1 > 0) {
- alloc_size = npoints1 * ndims1 * sizeof(ptdata1[0]);
+ alloc_size = (hsize_t)npoints1 * (unsigned)ndims1 * sizeof(ptdata1[0]);
HDassert(alloc_size == (hsize_t)((size_t)alloc_size)); /*check for overflow*/
- ptdata1 = HDmalloc((size_t)alloc_size);
+ ptdata1 = (hsize_t *)HDmalloc((size_t)alloc_size);
H5_CHECK_OVERFLOW(npoints1,hssize_t,hsize_t);
H5Sget_select_elem_pointlist(region1_id, (hsize_t)0, (hsize_t)npoints1, ptdata1);
- ptdata2 = HDmalloc((size_t)alloc_size);
+ ptdata2 = (hsize_t *)HDmalloc((size_t)alloc_size);
H5_CHECK_OVERFLOW(npoints1,hssize_t,hsize_t);
H5Sget_select_elem_pointlist(region2_id, (hsize_t)0, (hsize_t)npoints2, ptdata2);
@@ -2790,8 +2968,8 @@ hsize_t diff_region(hid_t obj1_id,
HDfree(ptdata2);
}
- nfound_b = nfound_b/ndims1;
- nfound_p = nfound_p/ndims1;
+ nfound_b = nfound_b / (unsigned)ndims1;
+ nfound_p = nfound_p / (unsigned)ndims1;
return (nfound_p + nfound_b);
}
@@ -2807,8 +2985,8 @@ hsize_t diff_region(hid_t obj1_id,
*/
static
-hsize_t character_compare(unsigned char *mem1,
- unsigned char *mem2,
+hsize_t character_compare(char *mem1,
+ char *mem2,
hsize_t i,
unsigned u,
int rank,
@@ -2821,8 +2999,8 @@ hsize_t character_compare(unsigned char *mem1,
int *ph)
{
hsize_t nfound=0; /* differences found */
- unsigned char temp1_uchar;
- unsigned char temp2_uchar;
+ char temp1_uchar;
+ char temp2_uchar;
HDmemcpy(&temp1_uchar, mem1, sizeof(unsigned char));
HDmemcpy(&temp2_uchar, mem2, sizeof(unsigned char));
@@ -2857,7 +3035,7 @@ hsize_t character_compare(unsigned char *mem1,
*-------------------------------------------------------------------------
*/
-hsize_t character_compare_opt(unsigned char *mem1,
+static hsize_t character_compare_opt(unsigned char *mem1,
unsigned char *mem2,
hsize_t i,
int rank,
@@ -2873,7 +3051,7 @@ hsize_t character_compare_opt(unsigned char *mem1,
unsigned char temp1_uchar;
unsigned char temp2_uchar;
double per;
- int both_zero;
+ hbool_t both_zero;
HDmemcpy(&temp1_uchar, mem1, sizeof(unsigned char));
HDmemcpy(&temp2_uchar, mem2, sizeof(unsigned char));
@@ -2950,7 +3128,7 @@ hsize_t character_compare_opt(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_float(unsigned char *mem1,
+static hsize_t diff_float(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -2969,9 +3147,9 @@ hsize_t diff_float(unsigned char *mem1,
float temp2_float;
hsize_t i;
double per;
- int both_zero;
- int isnan1=0;
- int isnan2=0;
+ hbool_t both_zero;
+ hbool_t isnan1 = FALSE;
+ hbool_t isnan2 = FALSE;
h5difftrace("diff_float start\n");
@@ -2998,27 +3176,27 @@ hsize_t diff_float(unsigned char *mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
- if (ABS(temp1_float-temp2_float) > options->delta)
+ if ((double)ABS(temp1_float-temp2_float) > options->delta)
{
if ( print_data(options) )
{
print_pos(ph,0,hyper_start+i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float));
}
nfound++;
}
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
print_pos(ph,0,hyper_start+i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float));
}
nfound++;
@@ -3051,7 +3229,7 @@ hsize_t diff_float(unsigned char *mem1,
isnan2 = my_isnan(FLT_FLOAT,&temp2_float);
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( (!isnan1 && !isnan2))
{
PER(temp1_float,temp2_float);
@@ -3062,8 +3240,8 @@ hsize_t diff_float(unsigned char *mem1,
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT_P_NOTCOMP,temp1_float,temp2_float,
- ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT_P_NOTCOMP, (double)temp1_float, (double)temp2_float,
+ (double)ABS(temp1_float - temp2_float));
}
nfound++;
}
@@ -3076,21 +3254,21 @@ hsize_t diff_float(unsigned char *mem1,
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT_P,temp1_float,temp2_float,
- ABS(temp1_float-temp2_float),
- ABS(1-temp2_float/temp1_float));
+ parallel_print(F_FORMAT_P, (double)temp1_float, (double)temp2_float,
+ (double)ABS(temp1_float - temp2_float),
+ (double)ABS(1 - temp2_float / temp1_float));
}
nfound++;
}
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
print_pos(ph,0,hyper_start+i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float));
}
nfound++;
@@ -3125,7 +3303,7 @@ hsize_t diff_float(unsigned char *mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
PER(temp1_float,temp2_float);
@@ -3136,36 +3314,36 @@ hsize_t diff_float(unsigned char *mem1,
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT_P_NOTCOMP,temp1_float,temp2_float,
- ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT_P_NOTCOMP, (double)temp1_float, (double)temp2_float,
+ (double)ABS(temp1_float - temp2_float));
}
nfound++;
}
else
- if ( per > options->percent && ABS(temp1_float-temp2_float) > options->delta )
+ if ( per > options->percent && (double)ABS(temp1_float - temp2_float) > options->delta )
{
if ( print_data(options) )
{
print_pos(ph,1,hyper_start+i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT_P,temp1_float,temp2_float,
- ABS(temp1_float-temp2_float),
- ABS(1-temp2_float/temp1_float));
+ parallel_print(F_FORMAT_P, (double)temp1_float, (double)temp2_float,
+ (double)ABS(temp1_float - temp2_float),
+ (double)ABS(1 - temp2_float / temp1_float));
}
nfound++;
}
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
print_pos(ph,0,hyper_start+i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float));
}
nfound++;
@@ -3194,7 +3372,7 @@ hsize_t diff_float(unsigned char *mem1,
{
print_pos(ph,0,hyper_start+i,acc,pos,rank,dims,obj1,obj2);
parallel_print(SPACES);
- parallel_print(F_FORMAT,temp1_float,temp2_float,ABS(temp1_float-temp2_float));
+ parallel_print(F_FORMAT, (double)temp1_float, (double)temp2_float, (double)ABS(temp1_float - temp2_float));
}
nfound++;
}
@@ -3226,7 +3404,7 @@ hsize_t diff_float(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_double(unsigned char *mem1,
+static hsize_t diff_double(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -3245,9 +3423,9 @@ hsize_t diff_double(unsigned char *mem1,
double temp2_double;
hsize_t i;
double per;
- int both_zero;
- int isnan1=0;
- int isnan2=0;
+ hbool_t both_zero;
+ hbool_t isnan1 = FALSE;
+ hbool_t isnan2 = FALSE;
h5difftrace("diff_double start\n");
/*-------------------------------------------------------------------------
@@ -3273,7 +3451,7 @@ hsize_t diff_double(unsigned char *mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
if (ABS(temp1_double-temp2_double) > options->delta)
{
@@ -3287,7 +3465,7 @@ hsize_t diff_double(unsigned char *mem1,
}
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -3326,7 +3504,7 @@ hsize_t diff_double(unsigned char *mem1,
isnan2 = my_isnan(FLT_DOUBLE,&temp2_double);
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
PER(temp1_double,temp2_double);
@@ -3359,7 +3537,7 @@ hsize_t diff_double(unsigned char *mem1,
}
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -3400,7 +3578,7 @@ hsize_t diff_double(unsigned char *mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
PER(temp1_double,temp2_double);
@@ -3434,7 +3612,7 @@ hsize_t diff_double(unsigned char *mem1,
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -3510,7 +3688,7 @@ hsize_t diff_double(unsigned char *mem1,
*/
#if H5_SIZEOF_LONG_DOUBLE !=0
-hsize_t diff_ldouble(unsigned char *mem1,
+static hsize_t diff_ldouble(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -3529,9 +3707,9 @@ hsize_t diff_ldouble(unsigned char *mem1,
long double temp2_double;
hsize_t i;
double per;
- int both_zero;
- int isnan1=0;
- int isnan2=0;
+ hbool_t both_zero;
+ hbool_t isnan1 = FALSE;
+ hbool_t isnan2 = FALSE;
h5difftrace("diff_ldouble start\n");
@@ -3558,7 +3736,7 @@ hsize_t diff_ldouble(unsigned char *mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
if (ABS(temp1_double-temp2_double) > options->delta)
{
@@ -3572,7 +3750,7 @@ hsize_t diff_ldouble(unsigned char *mem1,
}
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -3611,7 +3789,7 @@ hsize_t diff_ldouble(unsigned char *mem1,
isnan2 = my_isnan(FLT_LDOUBLE,&temp2_double);
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
PER(temp1_double,temp2_double);
@@ -3644,7 +3822,7 @@ hsize_t diff_ldouble(unsigned char *mem1,
}
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -3685,7 +3863,7 @@ hsize_t diff_ldouble(unsigned char *mem1,
}
/* both not NaN, do the comparison */
- if ( isnan1==0 && isnan2==0)
+ if ( !isnan1 && !isnan2)
{
PER(temp1_double,temp2_double);
@@ -3719,7 +3897,7 @@ hsize_t diff_ldouble(unsigned char *mem1,
}
/* only one is NaN, assume difference */
- else if (isnan1==1 && isnan2==0 || isnan1==0 && isnan2==1)
+ else if ((isnan1 && !isnan2) || (!isnan1 && isnan2))
{
if ( print_data(options) )
{
@@ -3795,7 +3973,7 @@ hsize_t diff_ldouble(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_schar(unsigned char *mem1,
+static hsize_t diff_schar(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -3814,7 +3992,7 @@ hsize_t diff_schar(unsigned char *mem1,
char temp2_char;
hsize_t i;
double per;
- int both_zero;
+ hbool_t both_zero;
h5difftrace("diff_schar start\n");
@@ -3974,7 +4152,7 @@ hsize_t diff_schar(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_uchar(unsigned char *mem1,
+static hsize_t diff_uchar(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -3993,7 +4171,7 @@ hsize_t diff_uchar(unsigned char *mem1,
unsigned char temp2_uchar;
hsize_t i;
double per;
- int both_zero;
+ hbool_t both_zero;
h5difftrace("diff_uchar start\n");
@@ -4152,7 +4330,7 @@ hsize_t diff_uchar(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_short(unsigned char *mem1,
+static hsize_t diff_short(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -4171,7 +4349,7 @@ hsize_t diff_short(unsigned char *mem1,
short temp2_short;
hsize_t i;
double per;
- int both_zero;
+ hbool_t both_zero;
h5difftrace("diff_short start\n");
/* -d and !-p */
@@ -4332,7 +4510,7 @@ hsize_t diff_short(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_ushort(unsigned char *mem1,
+static hsize_t diff_ushort(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -4351,7 +4529,7 @@ hsize_t diff_ushort(unsigned char *mem1,
unsigned short temp2_ushort;
hsize_t i;
double per;
- int both_zero;
+ hbool_t both_zero;
h5difftrace("diff_ushort start\n");
/* -d and !-p */
@@ -4513,7 +4691,7 @@ hsize_t diff_ushort(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_int(unsigned char *mem1,
+static hsize_t diff_int(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -4532,7 +4710,7 @@ hsize_t diff_int(unsigned char *mem1,
int temp2_int;
hsize_t i;
double per;
- int both_zero;
+ hbool_t both_zero;
h5difftrace("diff_int start\n");
/* -d and !-p */
@@ -4694,7 +4872,7 @@ hsize_t diff_int(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_uint(unsigned char *mem1,
+static hsize_t diff_uint(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -4713,7 +4891,7 @@ hsize_t diff_uint(unsigned char *mem1,
unsigned int temp2_uint;
hsize_t i;
double per;
- int both_zero;
+ hbool_t both_zero;
h5difftrace("diff_uint start\n");
/* -d and !-p */
@@ -4873,7 +5051,7 @@ hsize_t diff_uint(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_long(unsigned char *mem1,
+static hsize_t diff_long(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -4892,7 +5070,7 @@ hsize_t diff_long(unsigned char *mem1,
long temp2_long;
hsize_t i;
double per;
- int both_zero;
+ hbool_t both_zero;
h5difftrace("diff_long start\n");
/* -d and !-p */
@@ -5058,7 +5236,7 @@ hsize_t diff_long(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_ulong(unsigned char *mem1,
+static hsize_t diff_ulong(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -5077,7 +5255,7 @@ hsize_t diff_ulong(unsigned char *mem1,
unsigned long temp2_ulong;
hsize_t i;
double per;
- int both_zero;
+ hbool_t both_zero;
h5difftrace("diff_ulong start\n");
@@ -5243,7 +5421,7 @@ hsize_t diff_ulong(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_llong(unsigned char *mem1,
+static hsize_t diff_llong(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -5262,7 +5440,7 @@ hsize_t diff_llong(unsigned char *mem1,
long long temp2_llong;
hsize_t i;
double per;
- int both_zero;
+ hbool_t both_zero;
h5difftrace("diff_llong start\n");
/* -d and !-p */
@@ -5418,7 +5596,7 @@ hsize_t diff_llong(unsigned char *mem1,
*
*-------------------------------------------------------------------------
*/
-hsize_t diff_ullong(unsigned char *mem1,
+static hsize_t diff_ullong(unsigned char *mem1,
unsigned char *mem2,
hsize_t nelmts,
hsize_t hyper_start,
@@ -5438,7 +5616,7 @@ hsize_t diff_ullong(unsigned char *mem1,
hsize_t i;
float f1, f2;
double per;
- int both_zero;
+ hbool_t both_zero;
h5difftrace("diff_ullong start\n");
/* -d and !-p */
@@ -5665,8 +5843,8 @@ hbool_t equal_double(double value, double expected, diff_opt_t *options)
* detect NaNs
*-------------------------------------------------------------------------
*/
- int isnan1 = my_isnan(FLT_DOUBLE,&value);
- int isnan2 = my_isnan(FLT_DOUBLE,&expected);
+ hbool_t isnan1 = my_isnan(FLT_DOUBLE,&value);
+ hbool_t isnan2 = my_isnan(FLT_DOUBLE,&expected);
/*-------------------------------------------------------------------------
* we consider NaN == NaN to be true
@@ -5720,8 +5898,8 @@ hbool_t equal_ldouble(long double value, long double expected, diff_opt_t *optio
* detect NaNs
*-------------------------------------------------------------------------
*/
- int isnan1 = my_isnan(FLT_LDOUBLE,&value);
- int isnan2 = my_isnan(FLT_LDOUBLE,&expected);
+ hbool_t isnan1 = my_isnan(FLT_LDOUBLE,&value);
+ hbool_t isnan2 = my_isnan(FLT_LDOUBLE,&expected);
/*-------------------------------------------------------------------------
* we consider NaN == NaN to be true
@@ -5779,8 +5957,8 @@ hbool_t equal_float(float value, float expected, diff_opt_t *options)
* detect NaNs
*-------------------------------------------------------------------------
*/
- int isnan1 = my_isnan(FLT_FLOAT,&value);
- int isnan2 = my_isnan(FLT_FLOAT,&expected);
+ hbool_t isnan1 = my_isnan(FLT_FLOAT,&value);
+ hbool_t isnan2 = my_isnan(FLT_FLOAT,&expected);
/*-------------------------------------------------------------------------
* we consider NaN == NaN to be true
@@ -5832,40 +6010,39 @@ hbool_t equal_float(float value, float expected, diff_opt_t *options)
*
*-------------------------------------------------------------------------
*/
-static int
+static hbool_t
my_isnan(dtype_t type, void *val)
{
- int retval = 0;
+ hbool_t retval = FALSE;
char s[256];
h5difftrace("my_isnan start\n");
if (FLT_FLOAT==type)
{
float x;
+
HDmemcpy(&x, val, sizeof(float));
retval = (x!=x);
-
-
-
}
else if (FLT_DOUBLE==type)
{
double x;
+
HDmemcpy(&x, val, sizeof(double));
retval = (x!=x);
-
-#if H5_SIZEOF_LONG_DOUBLE!=H5_SIZEOF_DOUBLE && H5_SIZEOF_LONG_DOUBLE!=0
}
+#if H5_SIZEOF_LONG_DOUBLE!=H5_SIZEOF_DOUBLE && H5_SIZEOF_LONG_DOUBLE!=0
else if (FLT_LDOUBLE==type)
{
long double x;
+
HDmemcpy(&x, val, sizeof(long double));
retval = (x!=x);
-#endif
}
+#endif
else
{
- return 0;
+ return FALSE;
}
/*
@@ -5877,44 +6054,39 @@ my_isnan(dtype_t type, void *val)
if (FLT_FLOAT==type)
{
float x;
- HDmemcpy(&x, val, sizeof(float));
- sprintf(s, "%g", x);
-
+ HDmemcpy(&x, val, sizeof(float));
+ HDsnprintf(s, sizeof(s), "%g", (double)x);
}
else if (FLT_DOUBLE==type)
{
double x;
+
HDmemcpy(&x, val, sizeof(double));
- sprintf(s, "%g", x);
-#if H5_SIZEOF_LONG_DOUBLE!=H5_SIZEOF_DOUBLE && H5_SIZEOF_LONG_DOUBLE!=0
+ HDsnprintf(s, sizeof(s), "%g", x);
}
+#if H5_SIZEOF_LONG_DOUBLE!=H5_SIZEOF_DOUBLE && H5_SIZEOF_LONG_DOUBLE!=0
else if (FLT_LDOUBLE==type)
{
long double x;
+
HDmemcpy(&x, val, sizeof(long double));
- sprintf(s, "%Lg", x);
-#endif
+ HDsnprintf(s, sizeof(s), "%Lg", x);
}
+#endif
else
{
- return 0;
+ return FALSE;
}
-
if ( HDstrstr(s, "NaN") ||
HDstrstr(s, "NAN") ||
HDstrstr(s, "nan") ||
HDstrstr(s, "-1.#IND") /* WIN32 */
)
{
-
- retval = 1;
+ retval = TRUE;
}
-
-
-
-
}
#ifdef H5_VMS
@@ -5925,15 +6097,17 @@ my_isnan(dtype_t type, void *val)
if (FLT_FLOAT==type)
{
float x;
+
HDmemcpy(&x, val, sizeof(float));
retval = (x==FLT_MAX || x==-FLT_MAX);
} else if (FLT_DOUBLE==type) {
double x;
+
HDmemcpy(&x, val, sizeof(double));
retval = (x==DBL_MAX || x==-DBL_MAX);
} else
{
- return 0;
+ return FALSE;
}
}
#endif /*H5_VMS*/
@@ -5943,9 +6117,6 @@ my_isnan(dtype_t type, void *val)
}
-
-
-
/*-------------------------------------------------------------------------
*
* Local functions
@@ -6164,8 +6335,8 @@ static void h5diff_print_char(char ch)
*/
static void get_member_types(hid_t tid, mcomp_t *members)
{
- int i;
int tclass;
+ unsigned u;
if (tid <=0 || !members)
return;
@@ -6179,23 +6350,24 @@ static void get_member_types(hid_t tid, mcomp_t *members)
}
else if (tclass == H5T_COMPOUND)
{
- members->n = H5Tget_nmembers( tid );
- if (members->n <=0)
+ int nmembs;
+
+ nmembs = H5Tget_nmembers(tid);
+ if(nmembs <= 0)
return;
+ members->n = (unsigned)nmembs;
- members->ids = HDcalloc(members->n, sizeof(hid_t));
- members->flags = HDcalloc(members->n, sizeof(unsigned char));
- members->offsets = HDcalloc(members->n, sizeof(size_t));
- members->m = HDcalloc(members->n, sizeof(mcomp_t *));
+ members->ids = (hid_t *)HDcalloc(members->n, sizeof(hid_t));
+ members->offsets = (size_t *)HDcalloc(members->n, sizeof(size_t));
+ members->m = (mcomp_t **)HDcalloc(members->n, sizeof(mcomp_t *));
- for (i=0; i< members->n; i++)
+ for(u = 0; u < members->n; u++)
{
- members->ids[i] = H5Tget_member_type( tid, i );
- members->flags[i] = H5Tis_variable_str( members->ids[i] );
- members->offsets[i] = H5Tget_member_offset( tid, i );
- members->m[i] = (mcomp_t *)HDmalloc(sizeof(mcomp_t));
- HDmemset(members->m[i], 0, sizeof(mcomp_t));
- get_member_types(members->ids[i], members->m[i]);
+ members->ids[u] = H5Tget_member_type( tid, u );
+ members->offsets[u] = H5Tget_member_offset( tid, u );
+ members->m[u] = (mcomp_t *)HDmalloc(sizeof(mcomp_t));
+ HDmemset(members->m[u], 0, sizeof(mcomp_t));
+ get_member_types(members->ids[u], members->m[u]);
}
}
@@ -6211,24 +6383,23 @@ static void get_member_types(hid_t tid, mcomp_t *members)
*/
static void close_member_types(mcomp_t *members)
{
- int i;
+ unsigned u;
if (!members || members->n<=0 || !members->ids)
return;
- for (i=0; i<members->n; i++)
+ for(u = 0; u < members->n; u++)
{
- if (members->m[i])
+ if(members->m[u])
{
- close_member_types(members->m[i]);
- HDfree(members->m[i]);
+ close_member_types(members->m[u]);
+ HDfree(members->m[u]);
}
- H5Tclose(members->ids[i]);
+ H5Tclose(members->ids[u]);
}
- HDfree (members->m);
- HDfree (members->ids);
- HDfree (members->flags);
- HDfree (members->offsets);
+ HDfree(members->m);
+ HDfree(members->ids);
+ HDfree(members->offsets);
}
diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c
index 4899200..ef1d761 100644
--- a/tools/lib/h5diff_attr.c
+++ b/tools/lib/h5diff_attr.c
@@ -108,17 +108,17 @@ static void table_attrs_free( table_attrs_t *table )
*------------------------------------------------------------------------*/
static void table_attr_mark_exist(unsigned *exist, char *name, table_attrs_t *table)
{
- unsigned int new;
+ size_t new_val;
if(table->nattrs == table->size) {
table->size = MAX(1, table->size * 2);
table->attrs = (match_attr_t *)HDrealloc(table->attrs, table->size * sizeof(match_attr_t));
} /* end if */
- new = table->nattrs++;
- table->attrs[new].exist[0] = exist[0];
- table->attrs[new].exist[1] = exist[1];
- table->attrs[new].name = (char *)HDstrdup(name);
+ new_val = table->nattrs++;
+ table->attrs[new_val].exist[0] = exist[0];
+ table->attrs[new_val].exist[1] = exist[1];
+ table->attrs[new_val].name = (char *)HDstrdup(name);
}
/*-------------------------------------------------------------------------
@@ -459,8 +459,8 @@ hsize_t diff_attr(hid_t loc1_id,
goto error;
/* format output string */
- sprintf(np1,"%s of <%s>",name1,path1);
- sprintf(np2,"%s of <%s>",name2,path2);
+ HDsnprintf(np1, sizeof(np1), "%s of <%s>", name1, path1);
+ HDsnprintf(np2, sizeof(np1), "%s of <%s>", name2, path2);
/*---------------------------------------------------------------------
* array compare
diff --git a/tools/lib/h5tools_utils.h b/tools/lib/h5tools_utils.h
index 10c643d..3285278 100644
--- a/tools/lib/h5tools_utils.h
+++ b/tools/lib/h5tools_utils.h
@@ -159,7 +159,7 @@ typedef struct {
/* obtain link info from H5tools_get_symlink_info() */
typedef struct {
H5O_type_t trg_type; /* OUT: target type */
- const char *trg_path; /* OUT: target obj path. This must be freed
+ char *trg_path; /* OUT: target obj path. This must be freed
* when used with H5tools_get_symlink_info() */
haddr_t objno; /* OUT: target object address */
unsigned long fileno; /* OUT: File number that target object is located in */
diff --git a/tools/misc/h5cc.in b/tools/misc/h5cc.in
index 233c80a..45143e4 100644
--- a/tools/misc/h5cc.in
+++ b/tools/misc/h5cc.in
@@ -85,11 +85,12 @@ CLINKERBASE="@CC@"
# CFLAGS, CPPFLAGS and LDFLAGS are reserved for use by the script user.
# FLAGS brought from the hdf5 build are put in H5BLD_*FLAGS.
-# User's CPPFLAGS and CFLAGS come after their H5BLD counterparts to override
-# them. User's LDFLAGS come just before clibpath, user's LIBS come after
-# $link_objs and before the hdf5 libraries in $link_args, followed by any
-# external library paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS
-# or LIBS carried in from the hdf5 build.
+# User's CPPFLAGS and CFLAGS come after their H5BLD counterparts. User's
+# LDFLAGS come just before clibpath, user's LIBS come after $link_objs and
+# before the hdf5 libraries in $link_args, followed by any external library
+# paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS or LIBS carried in
+# from the hdf5 build. The order of the flags is intended to give precedence
+# to the user's flags.
H5BLD_CFLAGS="@AM_CFLAGS@ @CFLAGS@"
H5BLD_CPPFLAGS="@AM_CPPFLAGS@ @CPPFLAGS@"
H5BLD_LDFLAGS="@AM_LDFLAGS@ @LDFLAGS@"
@@ -102,7 +103,17 @@ CPPFLAGS="${HDF5_CPPFLAGS:-$CPPFLAGSBASE}"
LDFLAGS="${HDF5_LDFLAGS:-$LDFLAGSBASE}"
LIBS="${HDF5_LIBS:-$LIBSBASE}"
-USE_SHARED_LIB="${HDF5_USE_SHLIB:-no}"
+# If a static library is available, the default will be to use it. If the only
+# available library is shared, it will be used by default. The user can
+# override either default, although choosing an unavailable library will result
+# in link errors.
+STATIC_AVAILABLE="@enable_static@"
+if test "${STATIC_AVAILABLE}" = "yes"; then
+ USE_SHARED_LIB="${HDF5_USE_SHLIB:-no}"
+else
+ USE_SHARED_LIB="${HDF5_USE_SHLIB:-yes}"
+fi
+
usage() {
# A wonderfully informative "usage" message.
@@ -374,11 +385,12 @@ if test "x$do_link" = "xyes"; then
# module. It's okay if they're included twice in the compile line.
link_args="$link_args $H5BLD_LDFLAGS $H5BLD_LIBS"
- # User's CPPFLAGS and CFLAGS come after their H5BLD counterparts to override
- # them. User's LDFLAGS come just before clibpath, user's LIBS come after
- # $link_objs and before the hdf5 libraries in $link_args, followed by any
- # external library paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS
- # or LIBS carried in from the hdf5 build.
+ # User's CPPFLAGS and CFLAGS come after their H5BLD counterparts. User's
+ # LDFLAGS come just before clibpath, user's LIBS come after $link_objs and
+ # before the hdf5 libraries in $link_args, followed by any external library
+ # paths and libraries from AM_LDFLAGS, LDFLAGS, AM_LIBS or LIBS carried in
+ # from the hdf5 build. The order of the flags is intended to give precedence
+ # to the user's flags.
$SHOW $CLINKER $H5BLD_CPPFLAGS $CPPFLAGS $H5BLD_CFLAGS $CFLAGS $LDFLAGS $clibpath $link_objs $LIBS $link_args $shared_link
status=$?
fi
diff --git a/tools/misc/h5mkgrp.c b/tools/misc/h5mkgrp.c
index b4ac6f6..b9fb588 100644
--- a/tools/misc/h5mkgrp.c
+++ b/tools/misc/h5mkgrp.c
@@ -46,6 +46,7 @@ typedef struct {
size_t ngroups; /* Number of groups to create */
char **groups; /* Pointer to array of group names */
} param_t;
+param_t params; /* Command line parameter settings */
/*-------------------------------------------------------------------------
@@ -62,6 +63,15 @@ typedef struct {
static void
leave(int ret)
{
+ int curr_group;
+
+ if (params.fname)
+ HDfree (params.fname);
+ if (params.ngroups) {
+ for(curr_group = 0; curr_group < params.ngroups; curr_group++)
+ HDfree (params.groups[curr_group]);
+ HDfree (params.groups);
+ }
h5tools_close();
HDexit(ret);
} /* end leave() */
@@ -206,7 +216,6 @@ for(curr_group = 0; curr_group < params->ngroups; curr_group++)
int
main(int argc, const char *argv[])
{
- param_t params; /* Command line parameter settings */
hid_t fid; /* HDF5 file ID */
hid_t fapl_id; /* File access property list ID */
hid_t lcpl_id; /* Link creation property list ID */
@@ -322,6 +331,6 @@ main(int argc, const char *argv[])
/* Shut down h5tools lib */
h5tools_close();
- return EXIT_SUCCESS;
+ leave(EXIT_SUCCESS);
} /* end main() */
diff --git a/vms/src/h5pubconf.h b/vms/src/h5pubconf.h
index 57f358d..f4c0eab 100644
--- a/vms/src/h5pubconf.h
+++ b/vms/src/h5pubconf.h
@@ -502,7 +502,7 @@
#define H5_PACKAGE_NAME "HDF5"
/* Define to the full name and version of this package. */
-#define H5_PACKAGE_STRING "HDF5 1.9.148"
+#define H5_PACKAGE_STRING "HDF5 1.9.149"
/* Define to the one symbol short name of this package. */
#define H5_PACKAGE_TARNAME "hdf5"
@@ -511,7 +511,7 @@
#define H5_PACKAGE_URL ""
/* Define to the version of this package. */
-#define H5_PACKAGE_VERSION "1.9.148"
+#define H5_PACKAGE_VERSION "1.9.149"
/* Width for printf() for type `long long' or `__int64', use `ll' */
#define H5_PRINTF_LL_WIDTH "ll"
@@ -674,7 +674,7 @@
/* #undef H5_USING_MEMCHECKER */
/* Version number of package */
-#define H5_VERSION "1.9.148"
+#define H5_VERSION "1.9.149"
/* Define if vsnprintf() returns the correct value for formatted strings that
don't fit into size allowed */