diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2016-05-29 10:57:47 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2016-05-29 10:57:47 (GMT) |
commit | bf566b775bbef681e9135c38dbf414df2162cdcc (patch) | |
tree | 8d353ae50560cdf28fcbb313b92c7462e4cc7f6a /src/H5Bcache.c | |
parent | 29a5f1061994a9d40a96726df6141f6e127c4b7b (diff) | |
download | hdf5-bf566b775bbef681e9135c38dbf414df2162cdcc.zip hdf5-bf566b775bbef681e9135c38dbf414df2162cdcc.tar.gz hdf5-bf566b775bbef681e9135c38dbf414df2162cdcc.tar.bz2 |
[svn-r29969] Description:
Bring r29934 from revise_chunks branch to trunk:
(1) Fix for HDFFV-9434: throw an error instead of assertion when v1 btree level hits the 1 byte limit.
(2) Modifications to better handle error recovery when conversion by h5format_convert fails.
Tested on:
MacOSX/64 10.11.5 (amazon) w/serial, parallel & production
(h5committest forthcoming)
Diffstat (limited to 'src/H5Bcache.c')
-rw-r--r-- | src/H5Bcache.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/H5Bcache.c b/src/H5Bcache.c index 747e4c4..8354e8e 100644 --- a/src/H5Bcache.c +++ b/src/H5Bcache.c @@ -312,6 +312,11 @@ H5B__serialize(const H5F_t *f, void *_image, size_t H5_ATTR_UNUSED len, /* node type and level */ *image++ = (uint8_t)shared->type->id; + + /* 2^8 limit: only 1 byte is used to store node level */ + if(bt->level >= HDpow(2, LEVEL_BITS)) + HGOTO_ERROR(H5E_BTREE, H5E_CANTENCODE, FAIL, "unable to encode node level") + H5_CHECK_OVERFLOW(bt->level, unsigned, uint8_t); *image++ = (uint8_t)bt->level; |