diff options
author | Neil Fortner <nfortne2@hdfgroup.org> | 2009-03-23 18:51:29 (GMT) |
---|---|---|
committer | Neil Fortner <nfortne2@hdfgroup.org> | 2009-03-23 18:51:29 (GMT) |
commit | 849d015bbd0e12c8a920c3367bd67515842790bf (patch) | |
tree | 5e041cef4b5b9e932f6ff1101c42efadf88f8b1d /src/H5Fdbg.c | |
parent | 6f342514df3dbf035f5401783b9322f6deb0c87a (diff) | |
download | hdf5-849d015bbd0e12c8a920c3367bd67515842790bf.zip hdf5-849d015bbd0e12c8a920c3367bd67515842790bf.tar.gz hdf5-849d015bbd0e12c8a920c3367bd67515842790bf.tar.bz2 |
[svn-r16594] Purpose: fix bug 1189
Description:
Some files apparently exist in the wild which have corrupt symbol table messages
on the root group. These files can be opened by 1.6 (which uses the cached
information in the superblock) but not by 1.8. This patch fixes 1.8 and 1.9 so
they can now open these files, and will correct them if necessary. Also fix
some potential (rare) problems with array datatype versions.
Tested: jam (parallel; h5committest not working on linew or smirom)
Diffstat (limited to 'src/H5Fdbg.c')
-rw-r--r-- | src/H5Fdbg.c | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/src/H5Fdbg.c b/src/H5Fdbg.c index e05c32a..a4577c9 100644 --- a/src/H5Fdbg.c +++ b/src/H5Fdbg.c @@ -123,21 +123,26 @@ H5F_debug(H5F_t *f, FILE *stream, int indent, int fwidth) "Root group symbol table entry:", f->shared->root_grp ? "" : "(none)"); if(f->shared->root_grp) { - H5O_loc_t *root_oloc; /* Root object location */ - H5G_entry_t root_ent; /* Constructed root symbol table entry */ - - /* Reset the root group entry */ - H5G_ent_reset(&root_ent); - - /* Build up a simulated root group symbol table entry */ - root_oloc = H5G_oloc(f->shared->root_grp); - HDassert(root_oloc); - root_ent.type = H5G_NOTHING_CACHED; - root_ent.header = root_oloc->addr; - root_ent.file = f; - - /* Display root group symbol table entry info */ - H5G_ent_debug(f, &root_ent, stream, indent + 3, MAX(0, fwidth - 3), NULL); + if(f->shared->root_ent) /* Use real root group symbol table entry */ + H5G_ent_debug(f, f->shared->root_ent, stream, indent + 3, + MAX(0, fwidth - 3), NULL); + else { + H5O_loc_t *root_oloc; /* Root object location */ + H5G_entry_t root_ent; /* Constructed root symbol table entry */ + + /* Reset the root group entry */ + H5G_ent_reset(&root_ent); + + /* Build up a simulated root group symbol table entry */ + root_oloc = H5G_oloc(f->shared->root_grp); + HDassert(root_oloc); + root_ent.type = H5G_NOTHING_CACHED; + root_ent.header = root_oloc->addr; + root_ent.file = f; + + /* Display root group symbol table entry info */ + H5G_ent_debug(f, &root_ent, stream, indent + 3, MAX(0, fwidth - 3), NULL); + } } /* end if */ done: |