diff options
-rw-r--r-- | src/H5D.c | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -642,8 +642,12 @@ H5D_crt_ext_file_list_cmp(const void *value1, const void *value2, size_t size) assert(size==sizeof(H5O_efl_t)); /* Check the heap address of external file lists */ - if((cmp_value=H5F_addr_cmp(efl1->heap_addr,efl2->heap_addr))!=0) - HGOTO_DONE(cmp_value); + if(H5F_addr_defined(efl1->heap_addr) || H5F_addr_defined(efl2->heap_addr)) { + if(!H5F_addr_defined(efl1->heap_addr) && H5F_addr_defined(efl2->heap_addr)) HGOTO_DONE(-1); + if(H5F_addr_defined(efl1->heap_addr) && !H5F_addr_defined(efl2->heap_addr)) HGOTO_DONE(1); + if((cmp_value=H5F_addr_cmp(efl1->heap_addr,efl2->heap_addr))!=0) + HGOTO_DONE(cmp_value); + } /* end if */ /* Check the number of allocated efl entries */ if(efl1->nalloc < efl2->nalloc) HGOTO_DONE(-1); |