summaryrefslogtreecommitdiffstats
path: root/src/H5Bcache.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2016-05-29 10:57:47 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2016-05-29 10:57:47 (GMT)
commitbf566b775bbef681e9135c38dbf414df2162cdcc (patch)
tree8d353ae50560cdf28fcbb313b92c7462e4cc7f6a /src/H5Bcache.c
parent29a5f1061994a9d40a96726df6141f6e127c4b7b (diff)
downloadhdf5-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.c5
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;