[svn-r19150] Correction from the previous checkin for H5Oattribute.c. Because the attribute structure i

is shared now. The only situation that requires copying the data is when the metadata cache 
evicts and reloads this attribute. The attribute structure will be different in that 
situation. 

Tested on jam.
This commit is contained in:
Raymond Lu 2010-07-29 13:17:32 -05:00
parent 0357b5ad52
commit 178b80b679

View File

@ -849,9 +849,14 @@ H5O_attr_write_cb(H5O_t *oh, H5O_mesg_t *mesg/*in,out*/,
if(NULL == (chk_proxy = H5O_chunk_protect(udata->f, udata->dxpl_id, oh, mesg->chunkno)))
HGOTO_ERROR(H5E_ATTR, H5E_CANTPROTECT, H5_ITER_ERROR, "unable to load object header chunk")
/* No need to allocate data buffer or copy the data because the structure is shared
* now. Only do an assertion check, instead. SLU - 2010/7/28 */
HDassert(((H5A_t *)mesg->native)->shared == udata->attr->shared);
/* Because the attribute structure is shared now. The only situation that requires
* copying the data is when the metadata cache evicts and reloads this attribute.
* The attribute structure will be different in that situation. SLU-2010/7/29 */
if(((H5A_t *)mesg->native)->shared != udata->attr->shared)
/* (Needs to occur before updating the shared message, or the hash
* value on the old & new messages will be the same) */
HDmemcpy(((H5A_t *)mesg->native)->shared->data, udata->attr->shared->data,
udata->attr->shared->data_size);
/* Mark the message as modified */
mesg->dirty = TRUE;