summaryrefslogtreecommitdiffstats
path: root/src/H5Oattribute.c
diff options
context:
space:
mode:
authorRaymond Lu <songyulu@hdfgroup.org>2009-07-13 16:26:24 (GMT)
committerRaymond Lu <songyulu@hdfgroup.org>2009-07-13 16:26:24 (GMT)
commit8a56b4d081a9804f07878f1fe3578f5e2e1b7ef5 (patch)
tree89b912ff750a20ae63bd8f8d31801f69f7379504 /src/H5Oattribute.c
parent39ad4fae0f60e34d09a4fff4322fb3767eea2e56 (diff)
downloadhdf5-8a56b4d081a9804f07878f1fe3578f5e2e1b7ef5.zip
hdf5-8a56b4d081a9804f07878f1fe3578f5e2e1b7ef5.tar.gz
hdf5-8a56b4d081a9804f07878f1fe3578f5e2e1b7ef5.tar.bz2
[svn-r17177] In H5Odtype.c, the decoding function used to mark the datatype as on disk (see bug
#1585). I changed it to undefined and let the caller functions decide the location of the datatype. For H5Tdecode, it should mark the datatype as in memory. For other callers like H5Dopen or H5Aopen, they should makr it as on disk. Tested it on jam, smirom, linew.
Diffstat (limited to 'src/H5Oattribute.c')
-rw-r--r--src/H5Oattribute.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/H5Oattribute.c b/src/H5Oattribute.c
index 81c2d3b..f752a6f 100644
--- a/src/H5Oattribute.c
+++ b/src/H5Oattribute.c
@@ -536,6 +536,11 @@ H5O_attr_open_by_name(const H5O_loc_t *loc, const char *name, hid_t dxpl_id)
HDassert(udata.attr);
ret_value = udata.attr;
} /* end else */
+
+ /* Mark datatype as being on disk now */
+ if(H5T_set_loc(ret_value->shared->dt, loc->file, H5T_LOC_DISK) < 0)
+ HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "invalid datatype location")
+
} /* end else */
done:
@@ -641,6 +646,10 @@ H5O_attr_open_by_idx(const H5O_loc_t *loc, H5_index_t idx_type,
HGOTO_ERROR(H5E_ATTR, H5E_CANTCLOSEOBJ, NULL, "can't close attribute")
if(NULL == (ret_value = H5A_copy(NULL, exist_attr)))
HGOTO_ERROR(H5E_ATTR, H5E_CANTCOPY, NULL, "can't copy existing attribute")
+ } else {
+ /* Mark datatype as being on disk now */
+ if(H5T_set_loc(ret_value->shared->dt, loc->file, H5T_LOC_DISK) < 0)
+ HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, NULL, "invalid datatype location")
} /* end if */
} /* end if */