diff options
author | Robb Matzke <matzke@llnl.gov> | 1998-04-03 21:11:05 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1998-04-03 21:11:05 (GMT) |
commit | 92571bbe1d77c74ddefeeba6ac0b2097593c058d (patch) | |
tree | 610c3a65c2d3fa5dabfda39635770029bb734646 /src/H5O.c | |
parent | a780cdd178f849afbc8cbb24e416eef733cbc9f2 (diff) | |
download | hdf5-92571bbe1d77c74ddefeeba6ac0b2097593c058d.zip hdf5-92571bbe1d77c74ddefeeba6ac0b2097593c058d.tar.gz hdf5-92571bbe1d77c74ddefeeba6ac0b2097593c058d.tar.bz2 |
[svn-r336] Changes since 19980402
----------------------
./MANIFEST
./test/Makefile.in
./test/shtype.c [NEW]
Added some tests for shared data types.
./configure.in
Removed MF and HL from the default debug list since. MF
because it hasn't been implemented yet and HL because it
produces lots of annoying messages about adjusting the size of
local heaps.
./src/H5F.c
./src/H5T.c
./src/H5Tprivate.h
Fixed a bug with opening the same file twice. The first close
on the file_id incorrectly closed shared data structs.
Closing a file now correctly unshares data types that might be
pointing into that file.
./src/H5T.c
./src/H5Tpublic.h
Added an H5Tis_shared(). The caller supplies a file and a
data type and the function returns true if the data type is
currently marked for sharing in that file.
./src/H5AC.c
./src/H5F.c
./src/H5HL.c
./src/H5HG.c
./src/H5MF.c
./src/H5O.c
We now detect errors sooner when writing to a read-only
file. In the past, the error might not show up until the
cached item was flushed, and it was sometimes possible to not
even get an error!
./src/H5I.c
./src/H5Iprivate.h
If the search function fails then H5I_search() returns
failure. Also, the first argument for the search function
isn't const anymore because we might want the search to have
side effects (like calling H5T_unshare() for all shared data
types whose file just closed).
Diffstat (limited to 'src/H5O.c')
-rw-r--r-- | src/H5O.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -694,6 +694,10 @@ H5O_link(H5G_entry_t *ent, intn adjust) assert(ent); assert(ent->file); assert(H5F_addr_defined(&(ent->header))); + if (0==(ent->file->intent & H5F_ACC_RDWR)) { + HGOTO_ERROR (H5E_OHDR, H5E_WRITEERROR, FAIL, + "no write intent on file"); + } /* get header */ if (NULL == (oh = H5AC_protect(ent->file, H5AC_OHDR, &(ent->header), @@ -967,6 +971,10 @@ H5O_modify(H5G_entry_t *ent, const H5O_class_t *type, intn overwrite, assert(type); assert(mesg); assert (0==(flags & ~H5O_FLAG_BITS)); + if (0==(ent->file->intent & H5F_ACC_RDWR)) { + HGOTO_ERROR (H5E_OHDR, H5E_WRITEERROR, FAIL, + "no write intent on file"); + } if (NULL == (oh = H5AC_protect(ent->file, H5AC_OHDR, &(ent->header), NULL, NULL))) { @@ -1102,6 +1110,10 @@ H5O_remove(H5G_entry_t *ent, const H5O_class_t *type, intn sequence) assert(ent->file); assert(H5F_addr_defined(&(ent->header))); assert(type); + if (0==(ent->file->intent & H5F_ACC_RDWR)) { + HRETURN_ERROR (H5E_HEAP, H5E_WRITEERROR, FAIL, + "no write intent on file"); + } /* load the object header */ if (NULL == (oh = H5AC_protect(ent->file, H5AC_OHDR, &(ent->header), |