From a89130553de2d043eb69b65d75162af5b97df3bf Mon Sep 17 00:00:00 2001 From: Songyu Lu Date: Fri, 30 Nov 2018 09:02:03 -0600 Subject: HDFFV-10635: Allowing to write the same variable-length element more than once. --- src/H5HG.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/H5HG.c b/src/H5HG.c index b9d8dc3..63d482e 100644 --- a/src/H5HG.c +++ b/src/H5HG.c @@ -785,7 +785,13 @@ H5HG_remove (H5F_t *f, H5HG_t *hobj) HGOTO_ERROR(H5E_HEAP, H5E_CANTPROTECT, FAIL, "unable to protect global heap") HDassert(hobj->idx < heap->nused); - HDassert(heap->obj[hobj->idx].begin); + + /* When the application selects the same location to rewrite the element by using H5Sselect_elements, + * it can happen that the entry has been removed by first rewrite. Here we simply skip the removal of + * the entry and let the second rewrite happen. */ + if(heap->obj[hobj->idx].nrefs == 0 && heap->obj[hobj->idx].size == 0 && !heap->obj[hobj->idx].begin) + HGOTO_DONE(ret_value) + obj_start = heap->obj[hobj->idx].begin; /* Include object header size */ need = H5HG_ALIGN(heap->obj[hobj->idx].size) + H5HG_SIZEOF_OBJHDR(f); -- cgit v0.12