summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Kim <jkm@hdfgroup.org>2012-01-24 20:39:59 (GMT)
committerJonathan Kim <jkm@hdfgroup.org>2012-01-24 20:39:59 (GMT)
commit13ef2d1fbbc50956c1cea1d28462a974c8e036a6 (patch)
tree6b2022fd5ed84e87b1ad9918b6a66fd5de74f7a6
parent06f7971a13a5e026a4711a7408319840456a1541 (diff)
downloadhdf5-13ef2d1fbbc50956c1cea1d28462a974c8e036a6.zip
hdf5-13ef2d1fbbc50956c1cea1d28462a974c8e036a6.tar.gz
hdf5-13ef2d1fbbc50956c1cea1d28462a974c8e036a6.tar.bz2
[svn-r21890] Purpose:
Fix for HDFFV-7836 h5diff: displays error stack message for comparing the two dangling symlink with follow-symlinks option Description: While ago, to improve performance, skipping same object checking (h5tools_is_obj_same()) was added. However the checking function doesn't understand about the dangling link and caused the issue. Since handling dangling link code section already implemented, move the checking function after handling dangling-links to address the problem. Test was added and tagged with jira#. Tested: jam (linux32-LE), koala (linux64-LE), ostrich (linuxppc64-BE), tejeda (mac32-LE), linew (solaris-BE), Windows (32-LE cmake), Cmake (jam)
-rw-r--r--MANIFEST1
-rw-r--r--release_docs/RELEASE.txt3
-rw-r--r--tools/h5diff/CMakeLists.txt7
-rw-r--r--tools/h5diff/testfiles/h5diff_465.txt2
-rwxr-xr-xtools/h5diff/testh5diff.sh4
-rw-r--r--tools/lib/h5diff.c24
6 files changed, 30 insertions, 11 deletions
diff --git a/MANIFEST b/MANIFEST
index fd79de8..6e9f002 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1838,6 +1838,7 @@
./tools/h5diff/testfiles/h5diff_457.txt
./tools/h5diff/testfiles/h5diff_458.txt
./tools/h5diff/testfiles/h5diff_459.txt
+./tools/h5diff/testfiles/h5diff_465.txt
./tools/h5diff/testfiles/h5diff_480.txt
./tools/h5diff/testfiles/h5diff_481.txt
./tools/h5diff/testfiles/h5diff_482.txt
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index 9a234eb..41d6f6e 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -632,6 +632,9 @@ Bug Fixes since HDF5-1.8.0 release
Tools
-----
+ - h5diff: fixed to prevent from displaying error stack message when
+ comparing the two dangling symlinks with follow-symlinks option.
+ HDFFV-7836 (JKM 2012/01/13)
- h5repack: fixed memory leak for handling variable length string in
attribute. HDFFV-7840 (JKM 2012/01/06)
- h5ls: fixed segfault when access region reference data in an
diff --git a/tools/h5diff/CMakeLists.txt b/tools/h5diff/CMakeLists.txt
index cbb5ed3..1fa1cf3 100644
--- a/tools/h5diff/CMakeLists.txt
+++ b/tools/h5diff/CMakeLists.txt
@@ -130,6 +130,7 @@ IF (BUILD_TESTING)
h5diff_457.txt
h5diff_458.txt
h5diff_459.txt
+ h5diff_465.txt
h5diff_480.txt
h5diff_481.txt
h5diff_482.txt
@@ -655,6 +656,8 @@ IF (BUILD_TESTING)
h5diff_458.out.err
h5diff_459.out
h5diff_459.out.err
+ h5diff_465.out
+ h5diff_465.out.err
h5diff_480.out
h5diff_480.out.err
h5diff_481.out
@@ -1262,6 +1265,10 @@ ADD_H5_TEST (h5diff_458 2 --follow-symlinks -v --no-dangling-links ${FILE15} $
# dangling link found for ext links (obj to obj). Both dangle links
ADD_H5_TEST (h5diff_459 2 --follow-symlinks -v --no-dangling-links ${FILE15} ${FILE15} /ext_link_noexist1 /ext_link_noexist2)
+# dangling link --follow-symlinks (obj vs obj)
+# (HDFFV-7836)
+ADD_H5_TEST (h5diff_465 1 --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1)
+
# ##############################################################################
# # test for group diff recursivly
# ##############################################################################
diff --git a/tools/h5diff/testfiles/h5diff_465.txt b/tools/h5diff/testfiles/h5diff_465.txt
new file mode 100644
index 0000000..827e88e
--- /dev/null
+++ b/tools/h5diff/testfiles/h5diff_465.txt
@@ -0,0 +1,2 @@
+1 differences found
+EXIT CODE: 1
diff --git a/tools/h5diff/testh5diff.sh b/tools/h5diff/testh5diff.sh
index 8de12a5..aa0f502 100755
--- a/tools/h5diff/testh5diff.sh
+++ b/tools/h5diff/testh5diff.sh
@@ -200,6 +200,7 @@ $SRC_H5DIFF_TESTFILES/h5diff_456.txt
$SRC_H5DIFF_TESTFILES/h5diff_457.txt
$SRC_H5DIFF_TESTFILES/h5diff_458.txt
$SRC_H5DIFF_TESTFILES/h5diff_459.txt
+$SRC_H5DIFF_TESTFILES/h5diff_465.txt
$SRC_H5DIFF_TESTFILES/h5diff_480.txt
$SRC_H5DIFF_TESTFILES/h5diff_481.txt
$SRC_H5DIFF_TESTFILES/h5diff_482.txt
@@ -939,6 +940,9 @@ TOOLTEST h5diff_458.txt --follow-symlinks -v --no-dangling-links h5diff_extlin
# dangling link found for ext links (obj to obj). Both dangle links
TOOLTEST h5diff_459.txt --follow-symlinks -v --no-dangling-links h5diff_extlink_src.h5 h5diff_extlink_src.h5 /ext_link_noexist1 /ext_link_noexist2
+# dangling link --follow-symlinks (obj vs obj)
+# (HDFFV-7836)
+TOOLTEST h5diff_465.txt --follow-symlinks h5diff_danglelinks1.h5 h5diff_danglelinks2.h5 /soft_link1
# ##############################################################################
# # test for group diff recursivly
diff --git a/tools/lib/h5diff.c b/tools/lib/h5diff.c
index 6e9fee8..be20ed4 100644
--- a/tools/lib/h5diff.c
+++ b/tools/lib/h5diff.c
@@ -861,17 +861,6 @@ hsize_t h5diff(const char *fname1,
HDstrcat(obj2fullname, "/");
}
- /*
- * If verbose options is used, need to traverse thorugh the list of objects
- * in the group to print out objects information.
- * Use h5tools_is_obj_same() to improve performance by skipping
- * comparing details of same objects.
- */
- if(!(options->m_verbose || options->m_report))
- {
- if (h5tools_is_obj_same(file1_id,obj1fullname,file2_id,obj2fullname)!=0)
- goto out;
- }
/*---------------------------------------------
* check for following symlinks
@@ -949,6 +938,19 @@ hsize_t h5diff(const char *fname1,
obj2type = trg_linfo2.trg_type;
} /* end of if follow symlinks */
+ /*
+ * If verbose options is not used, don't need to traverse thorugh the list
+ * of objects in the group to display objects information,
+ * So use h5tools_is_obj_same() to improve performance by skipping
+ * comparing details of same objects.
+ */
+
+ if(!(options->m_verbose || options->m_report))
+ {
+ if (h5tools_is_obj_same(file1_id,obj1fullname,file2_id,obj2fullname)!=0)
+ goto out;
+ }
+
/* if both obj1 and obj2 are group */
if (obj1type == H5TRAV_TYPE_GROUP && obj2type == H5TRAV_TYPE_GROUP)