[svn-r13295] Description:

Fix bug in "create intermediate groups" code which was carrying too much
information from parent to child group.

Tested on:
    Linux/32 2.6 (chicago)
    Linux/64 2.6 (chicago2)
This commit is contained in:
Quincey Koziol 2007-02-13 22:47:51 -05:00
parent a5662c4978
commit 74754706cf
2 changed files with 11 additions and 2 deletions

View File

@ -696,6 +696,7 @@ H5G_traverse_real(const H5G_loc_t *_loc, const char *name, unsigned target,
const H5O_linfo_t def_linfo = H5G_CRT_LINK_INFO_DEF; /* Default link info settings */ const H5O_linfo_t def_linfo = H5G_CRT_LINK_INFO_DEF; /* Default link info settings */
H5O_ginfo_t par_ginfo; /* Group info settings for parent group */ H5O_ginfo_t par_ginfo; /* Group info settings for parent group */
H5O_linfo_t par_linfo; /* Link info settings for parent group */ H5O_linfo_t par_linfo; /* Link info settings for parent group */
H5O_linfo_t tmp_linfo; /* Temporary link info settings */
const H5O_ginfo_t *ginfo; /* Group info settings for new group */ const H5O_ginfo_t *ginfo; /* Group info settings for new group */
const H5O_linfo_t *linfo; /* Link info settings for new group */ const H5O_linfo_t *linfo; /* Link info settings for new group */
@ -720,8 +721,14 @@ H5G_traverse_real(const H5G_loc_t *_loc, const char *name, unsigned target,
/* Use default link info settings */ /* Use default link info settings */
linfo = &def_linfo; linfo = &def_linfo;
} /* end if */ } /* end if */
else else {
linfo = &par_linfo; /* Only keep the index_corder information from the parent
* group's link info
*/
HDmemcpy(&tmp_linfo, &def_linfo, sizeof(H5O_linfo_t));
tmp_linfo.index_corder = par_linfo.index_corder;
linfo = &tmp_linfo;
} /* end else */
/* Create the intermediate group */ /* Create the intermediate group */
/* XXX: Should we allow user to control the group creation params here? -QAK */ /* XXX: Should we allow user to control the group creation params here? -QAK */

View File

@ -169,6 +169,8 @@ typedef struct H5O_shared_t {
* (Data structure in memory) * (Data structure in memory)
* (if the fields in this struct are changed, remember to change the default * (if the fields in this struct are changed, remember to change the default
* link info structure in src/H5Gprivate.h - QAK) * link info structure in src/H5Gprivate.h - QAK)
* (if the fields in this struct are changed, also look at the code that
* creates intermediate groups in src/H5Gtraverse.c - QAK)
*/ */
typedef struct H5O_linfo_t { typedef struct H5O_linfo_t {
/* (creation order info) */ /* (creation order info) */