summaryrefslogtreecommitdiffstats
path: root/tools/lib
diff options
context:
space:
mode:
authorJonathan Kim <jkm@hdfgroup.org>2011-10-24 22:24:20 (GMT)
committerJonathan Kim <jkm@hdfgroup.org>2011-10-24 22:24:20 (GMT)
commit1fde26b7a5447089ac57b2ffc10f2b535b7999de (patch)
treed6663401ce4b73e4a242d92fce0d25e7dd303a13 /tools/lib
parentc7fe0c67adc04b108204af25c60449352b3a8e6b (diff)
downloadhdf5-1fde26b7a5447089ac57b2ffc10f2b535b7999de.zip
hdf5-1fde26b7a5447089ac57b2ffc10f2b535b7999de.tar.gz
hdf5-1fde26b7a5447089ac57b2ffc10f2b535b7999de.tar.bz2
[svn-r21660] Purpose:
HDFFV-7770 - h5diff segmentation fault on JPSS files Description: Fixed segfault over non-comparable attribute with different dimention or rank, along with '-c' option to display details. Merged from HDF5 trunk r21658. Tested: jam (linux32-LE), koala (linux64-LE), heiwa (linuxppc64-BE), tejeda (mac32-LE), linew (solaris-BE), Windows, Cmake
Diffstat (limited to 'tools/lib')
-rw-r--r--tools/lib/h5diff_attr.c4
-rw-r--r--tools/lib/h5diff_util.c31
2 files changed, 20 insertions, 15 deletions
diff --git a/tools/lib/h5diff_attr.c b/tools/lib/h5diff_attr.c
index d9132e9..85cd01f 100644
--- a/tools/lib/h5diff_attr.c
+++ b/tools/lib/h5diff_attr.c
@@ -380,8 +380,10 @@ hsize_t diff_attr(hid_t loc1_id,
*----------------------------------------------------------------------
*/
+ /* pass dims1 and dims2 for maxdims as well since attribute's maxdims
+ * are always same */
if( diff_can_type(ftype1_id, ftype2_id, rank1, rank2, dims1, dims2,
- NULL, NULL, name1, name2, options, 0) != 1 )
+ dims1, dims2, name1, name2, options, 0) != 1 )
{
if(H5Tclose(ftype1_id) < 0)
goto error;
diff --git a/tools/lib/h5diff_util.c b/tools/lib/h5diff_util.c
index 6d340d9..dfdc8b3 100644
--- a/tools/lib/h5diff_util.c
+++ b/tools/lib/h5diff_util.c
@@ -35,24 +35,27 @@ print_dimensions (int rank, hsize_t *dims)
{
int i;
- if ( rank > 0 )
- {
-
- parallel_print("[" );
- for ( i = 0; i < rank-1; i++)
- {
- parallel_print(HSIZE_T_FORMAT, dims[i]);
- parallel_print("x");
- }
-
- parallel_print(HSIZE_T_FORMAT, dims[rank-1]);
- parallel_print("]" );
- }
- else
+ if ( rank <= 0 )
{
parallel_print("H5S_SCALAR" );
}
+ else
+ {
+ if (!dims)
+ parallel_print("dimension is NULL");
+ else
+ {
+ parallel_print("[");
+ for ( i = 0; i < rank-1; i++)
+ {
+ parallel_print(HSIZE_T_FORMAT, dims[i]);
+ parallel_print("x");
+ }
+ parallel_print(HSIZE_T_FORMAT, dims[rank-1]);
+ parallel_print("]" );
+ }
+ }
}