diff options
-rw-r--r-- | src/H5B.c | 1 | ||||
-rw-r--r-- | src/H5Distore.c | 6 |
2 files changed, 7 insertions, 0 deletions
@@ -532,6 +532,7 @@ H5B_dest(H5F_t UNUSED *f, H5B_t *bt) * Check arguments. */ assert(bt); + assert(bt->rc_shared); H5FL_SEQ_FREE(haddr_t,bt->child); H5FL_BLK_FREE(native_block,bt->native); diff --git a/src/H5Distore.c b/src/H5Distore.c index 49b7947..661ab2d 100644 --- a/src/H5Distore.c +++ b/src/H5Distore.c @@ -1252,6 +1252,8 @@ H5D_istore_dest (H5D_t *dset, hid_t dxpl_id) HDmemset (rdcc, 0, sizeof(H5D_rdcc_t)); /* Free the raw B-tree node buffer */ + if(dset->shared->layout.u.chunk.btree_shared==NULL) + HGOTO_ERROR (H5E_IO, H5E_CANTFREE, FAIL, "ref-counted page nil") if(H5RC_DEC(dset->shared->layout.u.chunk.btree_shared)<0) HGOTO_ERROR (H5E_IO, H5E_CANTFREE, FAIL, "unable to decrement ref-counted page") @@ -3232,6 +3234,8 @@ H5D_istore_delete(H5F_t *f, hid_t dxpl_id, const H5O_layout_t *layout) HGOTO_ERROR(H5E_IO, H5E_CANTDELETE, 0, "unable to delete chunk B-tree") /* Free the raw B-tree node buffer */ + if(tmp_layout.u.chunk.btree_shared==NULL) + HGOTO_ERROR (H5E_IO, H5E_CANTFREE, FAIL, "ref-counted page nil") if(H5RC_DEC(tmp_layout.u.chunk.btree_shared)<0) HGOTO_ERROR (H5E_IO, H5E_CANTFREE, FAIL, "unable to decrement ref-counted page") } /* end if */ @@ -3484,6 +3488,8 @@ H5D_istore_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE * stream, int inden (void)H5B_debug (f, dxpl_id, addr, stream, indent, fwidth, H5B_ISTORE, &udata); /* Free the raw B-tree node buffer */ + if(layout.u.chunk.btree_shared==NULL) + HGOTO_ERROR (H5E_IO, H5E_CANTFREE, FAIL, "ref-counted page nil") if(H5RC_DEC(layout.u.chunk.btree_shared)<0) HGOTO_ERROR (H5E_IO, H5E_CANTFREE, FAIL, "unable to decrement ref-counted page") |