Fix SWMR/refresh bug hidden by library free lists (#1702)

This commit is contained in:
jhendersonHDF
2022-04-30 08:35:45 -05:00
committed by GitHub
parent c4d70e3571
commit 7e586e0e44

View File

@@ -194,8 +194,9 @@ done:
herr_t
H5O_refresh_metadata(H5O_loc_t *oloc, hid_t oid)
{
H5VL_object_t *vol_obj = NULL; /* VOL object associated with the ID */
hbool_t objs_incr = FALSE; /* Whether the object count in the file was incremented */
H5VL_object_t *vol_obj = NULL; /* VOL object associated with the ID */
hbool_t objs_incr = FALSE; /* Whether the object count in the file was incremented */
H5F_t * file = NULL;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
@@ -208,6 +209,11 @@ H5O_refresh_metadata(H5O_loc_t *oloc, hid_t oid)
H5O_shared_t cached_H5O_shared;
H5VL_t * connector = NULL;
/* Hold a copy of the object's file pointer, since closing the object will
* invalidate the file pointer in the oloc.
*/
file = oloc->file;
/* Create empty object location */
obj_loc.oloc = &obj_oloc;
obj_loc.path = &obj_path;
@@ -256,8 +262,8 @@ H5O_refresh_metadata(H5O_loc_t *oloc, hid_t oid)
} /* end if */
done:
if (objs_incr)
H5F_decr_nopen_objs(oloc->file);
if (objs_incr && file)
H5F_decr_nopen_objs(file);
FUNC_LEAVE_NOAPI(ret_value);
} /* end H5O_refresh_metadata() */