diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/.distdep | 586 | ||||
-rw-r--r-- | src/H5B.c | 4 | ||||
-rw-r--r-- | src/H5Distore.c | 8 | ||||
-rw-r--r-- | src/H5Fistore.c | 8 | ||||
-rw-r--r-- | src/H5MMprivate.h | 4 | ||||
-rw-r--r-- | src/H5O.c | 4 | ||||
-rw-r--r-- | src/H5Ocomp.c | 40 | ||||
-rw-r--r-- | src/H5Oefl.c | 2 | ||||
-rw-r--r-- | src/H5Oprivate.h | 2 | ||||
-rw-r--r-- | src/H5P.c | 47 | ||||
-rw-r--r-- | src/H5Ppublic.h | 3 | ||||
-rw-r--r-- | src/H5S.c | 6 | ||||
-rw-r--r-- | src/H5Sselect.c | 3 | ||||
-rw-r--r-- | src/H5Z.c | 44 | ||||
-rw-r--r-- | src/H5Zprivate.h | 20 | ||||
-rw-r--r-- | src/H5public.h | 2 |
16 files changed, 411 insertions, 372 deletions
diff --git a/src/.distdep b/src/.distdep index 88b4253..d7abd6d 100644 --- a/src/.distdep +++ b/src/.distdep @@ -1,34 +1,3 @@ -H5.o: \ - H5.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Ipublic.h \ - H5Dpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5Iprivate.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Pprivate.h \ - H5Ppublic.h \ - H5Zpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h H5A.o: \ H5A.c \ H5private.h \ @@ -62,70 +31,6 @@ H5A.o: \ H5Ppublic.h \ H5Apkg.h \ H5Aprivate.h -H5AC.o: \ - H5AC.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Ipublic.h \ - H5Dpublic.h \ - H5Eprivate.h \ - H5Epublic.h -H5B.o: \ - H5B.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Ipublic.h \ - H5Dpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5MFprivate.h \ - H5MFpublic.h \ - H5MMprivate.h -H5D.o: \ - H5D.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Iprivate.h \ - H5Ipublic.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5Dprivate.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5HLprivate.h \ - H5HLpublic.h \ - H5MFprivate.h \ - H5MFpublic.h H5E.o: \ H5E.c \ H5private.h \ @@ -201,34 +106,6 @@ H5Ffamily.o: \ H5Eprivate.h \ H5Epublic.h \ H5Ipublic.h -H5Fistore.o: \ - H5Fistore.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Dprivate.h \ - H5Dpublic.h \ - H5Ipublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5MFprivate.h \ - H5MFpublic.h H5Flow.o: \ H5Flow.c \ H5private.h \ @@ -482,34 +359,6 @@ H5MM.o: \ H5Eprivate.h \ H5Epublic.h \ H5Ipublic.h -H5O.o: \ - H5O.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5ACprivate.h \ - H5ACpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Ipublic.h \ - H5Dpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5MFprivate.h \ - H5MFpublic.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h H5Oattr.o: \ H5Oattr.c \ H5private.h \ @@ -538,29 +387,6 @@ H5Oattr.o: \ H5Zprivate.h \ H5Zpublic.h \ H5Apkg.h -H5Ocomp.o: \ - H5Ocomp.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5Ipublic.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h H5Ocont.o: \ H5Ocont.c \ H5private.h \ @@ -607,34 +433,6 @@ H5Odtype.o: \ H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h -H5Oefl.o: \ - H5Oefl.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5Ipublic.h \ - H5HLprivate.h \ - H5HLpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h H5Olayout.o: \ H5Olayout.c \ H5private.h \ @@ -791,57 +589,6 @@ H5Ostab.o: \ H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h -H5P.o: \ - H5P.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Iprivate.h \ - H5Ipublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5Dprivate.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ - H5Sprivate.h \ - H5Spublic.h \ - H5Zprivate.h \ - H5Zpublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5MMprivate.h -H5S.o: \ - H5S.c \ - H5private.h \ - H5public.h \ - H5config.h \ - H5Iprivate.h \ - H5Ipublic.h \ - H5Eprivate.h \ - H5Epublic.h \ - H5MMprivate.h \ - H5MMpublic.h \ - H5Oprivate.h \ - H5Opublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ - H5Gprivate.h \ - H5Gpublic.h \ - H5Bprivate.h \ - H5Bpublic.h \ - H5HGprivate.h \ - H5HGpublic.h \ - H5Tprivate.h H5Sall.o: \ H5Sall.c \ H5private.h \ @@ -934,36 +681,193 @@ H5Ssimp.o: \ H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h -H5Sselect.o: \ - H5Sselect.c \ +H5Tbit.o: \ + H5Tbit.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5Ipublic.h \ + H5Iprivate.h \ + H5Tpkg.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Gprivate.h +H5Tconv.o: \ + H5Tconv.c \ + H5Iprivate.h \ + H5Ipublic.h \ + H5public.h \ + H5config.h \ + H5private.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Tpkg.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h +H5Tinit.o: \ + H5Tinit.c \ H5private.h \ H5public.h \ H5config.h \ + H5Iprivate.h \ + H5Ipublic.h \ H5Eprivate.h \ H5Epublic.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Tpkg.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5Tprivate.h +H5TB.o: \ + H5TB.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Iprivate.h \ + H5Ipublic.h \ + H5Eprivate.h +H5V.o: \ + H5V.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5Ipublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Sprivate.h \ + H5Spublic.h +H5.o: \ + H5.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5ACprivate.h \ + H5ACpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ H5Ipublic.h \ + H5Dpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5Eprivate.h \ + H5Epublic.h \ H5Iprivate.h \ H5MMprivate.h \ H5MMpublic.h \ + H5Pprivate.h \ + H5Ppublic.h \ + H5Zpublic.h \ H5Sprivate.h \ H5Spublic.h \ H5Gprivate.h \ H5Gpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h +H5AC.o: \ + H5AC.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5ACprivate.h \ + H5ACpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Ipublic.h \ + H5Dpublic.h \ + H5Eprivate.h \ + H5Epublic.h +H5B.o: \ + H5B.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5ACprivate.h \ + H5ACpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Ipublic.h \ + H5Dpublic.h \ H5Bprivate.h \ H5Bpublic.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5MFprivate.h \ + H5MFpublic.h \ + H5MMprivate.h +H5D.o: \ + H5D.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Iprivate.h \ + H5Ipublic.h \ + H5ACprivate.h \ + H5ACpublic.h \ H5Fprivate.h \ H5Fpublic.h \ H5Dpublic.h \ + H5Dprivate.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ H5Oprivate.h \ H5Opublic.h \ H5HGprivate.h \ H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ H5Zprivate.h \ - H5Zpublic.h -H5T.o: \ - H5T.c \ + H5Zpublic.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5HLprivate.h \ + H5HLpublic.h \ + H5MFprivate.h \ + H5MFpublic.h +H5Fistore.o: \ + H5Fistore.c \ H5private.h \ H5public.h \ H5config.h \ @@ -986,100 +890,196 @@ H5T.o: \ H5Spublic.h \ H5Zprivate.h \ H5Zpublic.h \ - H5Iprivate.h \ H5Eprivate.h \ H5Epublic.h \ - H5MMprivate.h -H5Tbit.o: \ - H5Tbit.c \ + H5MFprivate.h \ + H5MFpublic.h +H5O.o: \ + H5O.c \ H5private.h \ H5public.h \ H5config.h \ + H5ACprivate.h \ + H5ACpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Ipublic.h \ + H5Dpublic.h \ H5Eprivate.h \ H5Epublic.h \ - H5Ipublic.h \ - H5Iprivate.h \ - H5Tpkg.h \ + H5MFprivate.h \ + H5MFpublic.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ H5HGprivate.h \ H5HGpublic.h \ - H5Fprivate.h \ - H5Fpublic.h \ - H5Dpublic.h \ H5Tprivate.h \ H5Tpublic.h \ - H5Gprivate.h -H5Tconv.o: \ - H5Tconv.c \ - H5Iprivate.h \ - H5Ipublic.h \ + H5Sprivate.h +H5Ocomp.o: \ + H5Ocomp.c \ + H5private.h \ H5public.h \ H5config.h \ - H5private.h \ H5Eprivate.h \ H5Epublic.h \ + H5Ipublic.h \ H5MMprivate.h \ H5MMpublic.h \ - H5Tpkg.h \ - H5HGprivate.h \ - H5HGpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ H5Fprivate.h \ H5Fpublic.h \ H5Dpublic.h \ - H5Tprivate.h \ - H5Tpublic.h \ H5Gprivate.h \ H5Gpublic.h \ H5Bprivate.h \ - H5Bpublic.h -H5Tinit.o: \ - H5Tinit.c \ + H5Bpublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h +H5Oefl.o: \ + H5Oefl.c \ H5private.h \ H5public.h \ H5config.h \ - H5Iprivate.h \ - H5Ipublic.h \ H5Eprivate.h \ H5Epublic.h \ + H5Ipublic.h \ + H5HLprivate.h \ + H5HLpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ H5MMprivate.h \ H5MMpublic.h \ - H5Tpkg.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ H5HGprivate.h \ H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Zprivate.h +H5P.o: \ + H5P.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Iprivate.h \ + H5Ipublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ H5Fprivate.h \ H5Fpublic.h \ H5Dpublic.h \ - H5Tprivate.h -H5TB.o: \ - H5TB.c \ + H5Dprivate.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Zprivate.h \ + H5Zpublic.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5MMprivate.h +H5S.o: \ + H5S.c \ H5private.h \ H5public.h \ H5config.h \ H5Iprivate.h \ H5Ipublic.h \ - H5Eprivate.h -H5V.o: \ - H5V.c \ + H5Eprivate.h \ + H5Epublic.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h +H5Sselect.o: \ + H5Sselect.c \ H5private.h \ H5public.h \ H5config.h \ H5Eprivate.h \ H5Epublic.h \ H5Ipublic.h \ + H5Iprivate.h \ + H5MMprivate.h \ + H5MMpublic.h \ + H5Sprivate.h \ + H5Spublic.h \ + H5Gprivate.h \ + H5Gpublic.h \ + H5Bprivate.h \ + H5Bpublic.h \ + H5Fprivate.h \ + H5Fpublic.h \ + H5Dpublic.h \ H5Oprivate.h \ H5Opublic.h \ + H5HGprivate.h \ + H5HGpublic.h \ + H5Tprivate.h \ + H5Tpublic.h \ + H5Zprivate.h \ + H5Zpublic.h +H5T.o: \ + H5T.c \ + H5private.h \ + H5public.h \ + H5config.h \ + H5Dprivate.h \ + H5Dpublic.h \ + H5Ipublic.h \ H5Fprivate.h \ H5Fpublic.h \ - H5Dpublic.h \ H5Gprivate.h \ H5Gpublic.h \ H5Bprivate.h \ H5Bpublic.h \ + H5Oprivate.h \ + H5Opublic.h \ H5HGprivate.h \ H5HGpublic.h \ H5Tprivate.h \ H5Tpublic.h \ H5Sprivate.h \ - H5Spublic.h + H5Spublic.h \ + H5Zprivate.h \ + H5Zpublic.h \ + H5Iprivate.h \ + H5Eprivate.h \ + H5Epublic.h \ + H5MMprivate.h H5Z.o: \ H5Z.c \ H5private.h \ @@ -1471,10 +1471,6 @@ H5B_iterate (H5F_t *f, const H5B_class_t *type, const haddr_t *addr, if (NULL==(bt=H5AC_find (f, H5AC_BT, cur_addr, type, udata))) { HGOTO_ERROR (H5E_BTREE, H5E_CANTLOAD, FAIL, "B-tree node"); } - if (NULL==(child=H5MM_malloc (bt->nchildren*sizeof(haddr_t)))) { - HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, - "memory allocation failed"); - } for (i=0; i<bt->nchildren; i++) { child[i] = bt->child[i]; } diff --git a/src/H5Distore.c b/src/H5Distore.c index 21f90bc..e77aabc 100644 --- a/src/H5Distore.c +++ b/src/H5Distore.c @@ -1163,8 +1163,8 @@ H5F_istore_lock (H5F_t *f, const H5O_layout_t *layout, ent->dirty = FALSE; ent->chunk_size = chunk_size; ent->alloc_size = chunk_alloc; - ent->layout = H5O_copy (H5O_LAYOUT, layout); - ent->pline = H5O_copy (H5O_PLINE, pline); + ent->layout = H5O_copy (H5O_LAYOUT, layout, NULL); + ent->pline = H5O_copy (H5O_PLINE, pline, NULL); for (i=0; i<layout->ndims; i++) { ent->offset[i] = offset[i]; } @@ -1268,8 +1268,8 @@ H5F_istore_unlock (H5F_t *f, const H5O_layout_t *layout, H5F_rdcc_ent_t x; HDmemset (&x, 0, sizeof x); x.dirty = TRUE; - x.layout = H5O_copy (H5O_LAYOUT, layout); - x.pline = H5O_copy (H5O_PLINE, pline); + x.layout = H5O_copy (H5O_LAYOUT, layout, NULL); + x.pline = H5O_copy (H5O_PLINE, pline, NULL); for (i=0, x.chunk_size=1; i<layout->ndims; i++) { x.offset[i] = offset[i]; x.chunk_size *= layout->dim[i]; diff --git a/src/H5Fistore.c b/src/H5Fistore.c index 21f90bc..e77aabc 100644 --- a/src/H5Fistore.c +++ b/src/H5Fistore.c @@ -1163,8 +1163,8 @@ H5F_istore_lock (H5F_t *f, const H5O_layout_t *layout, ent->dirty = FALSE; ent->chunk_size = chunk_size; ent->alloc_size = chunk_alloc; - ent->layout = H5O_copy (H5O_LAYOUT, layout); - ent->pline = H5O_copy (H5O_PLINE, pline); + ent->layout = H5O_copy (H5O_LAYOUT, layout, NULL); + ent->pline = H5O_copy (H5O_PLINE, pline, NULL); for (i=0; i<layout->ndims; i++) { ent->offset[i] = offset[i]; } @@ -1268,8 +1268,8 @@ H5F_istore_unlock (H5F_t *f, const H5O_layout_t *layout, H5F_rdcc_ent_t x; HDmemset (&x, 0, sizeof x); x.dirty = TRUE; - x.layout = H5O_copy (H5O_LAYOUT, layout); - x.pline = H5O_copy (H5O_PLINE, pline); + x.layout = H5O_copy (H5O_LAYOUT, layout, NULL); + x.pline = H5O_copy (H5O_PLINE, pline, NULL); for (i=0, x.chunk_size=1; i<layout->ndims; i++) { x.offset[i] = offset[i]; x.chunk_size *= layout->dim[i]; diff --git a/src/H5MMprivate.h b/src/H5MMprivate.h index d417584..dc7b48a 100644 --- a/src/H5MMprivate.h +++ b/src/H5MMprivate.h @@ -22,8 +22,8 @@ /* Private headers needed by this file */ #include <H5private.h> -#define H5MM_malloc(Z) HDmalloc(Z) -#define H5MM_calloc(Z) HDcalloc(1,Z) +#define H5MM_malloc(Z) HDmalloc(MAX(1,Z)) +#define H5MM_calloc(Z) HDcalloc(1,MAX(1,Z)) /* * Library prototypes... @@ -742,7 +742,7 @@ H5O_free (const H5O_class_t *type, void *mesg) *------------------------------------------------------------------------- */ void * -H5O_copy (const H5O_class_t *type, const void *mesg) +H5O_copy (const H5O_class_t *type, const void *mesg, void *dst) { void *ret_value = NULL; @@ -752,7 +752,7 @@ H5O_copy (const H5O_class_t *type, const void *mesg) assert (type->copy); if (mesg) { - if (NULL==(ret_value=(type->copy)(mesg, NULL))) { + if (NULL==(ret_value=(type->copy)(mesg, dst))) { HRETURN_ERROR (H5E_OHDR, H5E_CANTINIT, NULL, "unable to copy object header message"); } diff --git a/src/H5Ocomp.c b/src/H5Ocomp.c index a30eb6f..1b959a1 100644 --- a/src/H5Ocomp.c +++ b/src/H5Ocomp.c @@ -171,6 +171,8 @@ H5O_pline_encode (H5F_t __unused__ *f, uint8 *p/*out*/, const void *mesg) { const H5O_pline_t *pline = (const H5O_pline_t*)mesg; size_t i, j, name_length; + const char *name=NULL; + H5Z_class_t *cls=NULL; FUNC_ENTER (H5O_pline_encode, FAIL); @@ -188,17 +190,24 @@ H5O_pline_encode (H5F_t __unused__ *f, uint8 *p/*out*/, const void *mesg) *p++ = 0; /*reserved 6*/ for (i=0; i<pline->nfilters; i++) { - if (pline->filter[i].name) { - name_length = strlen(pline->filter[i].name)+1; - } else { - name_length = 0; + /* + * Get the filter name. If the pipeline message has a name in it then + * use that one. Otherwise try to look up the filter and get the name + * as it was registered. + */ + if (NULL==(name=pline->filter[i].name) && + (cls=H5Z_find(pline->filter[i].id))) { + name = cls->name; } + name_length = name ? strlen(name)+1 : 0; + + /* Encode the filter */ UINT16ENCODE(p, pline->filter[i].id); UINT16ENCODE(p, H5O_ALIGN(name_length)); UINT16ENCODE(p, pline->filter[i].flags); UINT16ENCODE(p, pline->filter[i].cd_nelmts); if (name_length>0) { - memcpy(p, pline->filter[i].name, name_length); + memcpy(p, name, name_length); p += name_length; while (name_length++ % 8) *p++ = 0; } @@ -313,23 +322,32 @@ static size_t H5O_pline_size (H5F_t __unused__ *f, const void *mesg) { const H5O_pline_t *pline = (const H5O_pline_t*)mesg; - size_t i, size; + size_t i, size, name_len; + const char *name = NULL; + H5Z_class_t *cls = NULL; FUNC_ENTER (H5O_pline_size, 0); + /* Message header */ size = 1 + /*version */ 1 + /*number of filters */ 6; /*reserved */ for (i=0; i<pline->nfilters; i++) { + /* Get the name of the filter, same as done with H5O_pline_encode() */ + if (NULL==(name=pline->filter[i].name) && + (cls=H5Z_find(pline->filter[i].id))) { + name = cls->name; + } + name_len = name ? strlen(name)+1 : 0; + + size += 2 + /*filter identification number */ 2 + /*name length */ 2 + /*flags */ - 2; /*number of client data values */ - if (pline->filter[i].name) { - size_t n = strlen(pline->filter[i].name) + 1; - size += H5O_ALIGN(n); - } + 2 + /*number of client data values */ + H5O_ALIGN(name_len); /*length of the filter name */ + size += pline->filter[i].cd_nelmts * 4; if (pline->filter[i].cd_nelmts % 2) size += 4; } diff --git a/src/H5Oefl.c b/src/H5Oefl.c index 442b7b4..1c8adcc 100644 --- a/src/H5Oefl.c +++ b/src/H5Oefl.c @@ -244,7 +244,7 @@ H5O_efl_copy(const void *_mesg, void *_dest) "memory allocation failed"); } - } else if (NULL==dest->slot || dest->nalloc<mesg->nalloc) { + } else if (dest->nalloc<mesg->nalloc) { H5MM_xfree(dest->slot); if (NULL==(dest->slot = H5MM_malloc(mesg->nalloc* sizeof(H5O_efl_entry_t)))) { diff --git a/src/H5Oprivate.h b/src/H5Oprivate.h index 370603f..748e619 100644 --- a/src/H5Oprivate.h +++ b/src/H5Oprivate.h @@ -268,7 +268,7 @@ herr_t H5O_touch(H5G_entry_t *ent, hbool_t force); herr_t H5O_remove (H5G_entry_t *ent, const H5O_class_t *type, intn sequence); herr_t H5O_reset (const H5O_class_t *type, void *native); void *H5O_free (const H5O_class_t *type, void *mesg); -void *H5O_copy (const H5O_class_t *type, const void *mesg); +void *H5O_copy (const H5O_class_t *type, const void *mesg, void *dst); herr_t H5O_share (H5F_t *f, const H5O_class_t *type, const void *mesg, H5HG_t *hobj/*out*/); herr_t H5O_debug (H5F_t *f, const haddr_t *addr, FILE * stream, intn indent, @@ -346,7 +346,8 @@ H5P_close (H5P_class_t type, void *plist) break; case H5P_DATASET_CREATE: - H5O_reset (H5O_EFL, &(dc_list->efl)); + H5O_reset(H5O_EFL, &(dc_list->efl)); + H5O_reset(H5O_PLINE, &(dc_list->pline)); break; case H5P_DATASET_XFER: @@ -2302,13 +2303,15 @@ H5Pget_nfilters (hid_t plist_id) */ H5Z_filter_t H5Pget_filter (hid_t plist_id, int idx, unsigned int *flags/*out*/, - size_t *cd_nelmts/*in_out*/, unsigned cd_values[]/*out*/) + size_t *cd_nelmts/*in_out*/, unsigned cd_values[]/*out*/, + size_t namelen, char name[]/*out*/) { H5D_create_t *plist = NULL; size_t i; FUNC_ENTER (H5Pget_filter, FAIL); - H5TRACE5("Zf","iIsx*zx",plist_id,idx,flags,cd_nelmts,cd_values); + H5TRACE7("Zf","iIsx*zxzx",plist_id,idx,flags,cd_nelmts,cd_values,namelen, + name); /* Check arguments */ if (H5P_DATASET_XFER==H5P_get_class(plist_id)) { @@ -2355,6 +2358,16 @@ H5Pget_filter (hid_t plist_id, int idx, unsigned int *flags/*out*/, } if (cd_nelmts) *cd_nelmts = plist->pline.filter[idx].cd_nelmts; + if (namelen>0 && name) { + const char *s = plist->pline.filter[idx].name; + if (!s) { + H5Z_class_t *cls = H5Z_find(plist->pline.filter[idx].id); + if (cls) s = cls->name; + } + if (s) strncpy(name, s, namelen); + else name[0] = '\0'; + } + FUNC_LEAVE (plist->pline.filter[idx].id); } @@ -2737,7 +2750,6 @@ H5P_copy (H5P_class_t type, const void *src) { size_t size; void *dst = NULL; - int i; const H5D_create_t *dc_src = NULL; H5D_create_t *dc_dst = NULL; const H5F_access_t *fa_src = NULL; @@ -2809,20 +2821,21 @@ H5P_copy (H5P_class_t type, const void *src) case H5P_DATASET_CREATE: dc_src = (const H5D_create_t*)src; dc_dst = (H5D_create_t*)dst; - - if (dc_src->efl.nalloc>0) { - dc_dst->efl.slot = H5MM_malloc (dc_dst->efl.nalloc * - sizeof(H5O_efl_entry_t)); - if (NULL==dc_dst->efl.slot) { - HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, - "memory allocation failed"); - } - for (i=0; i<dc_src->efl.nused; i++) { - char *s = H5MM_xstrdup (dc_src->efl.slot[i].name); - dc_dst->efl.slot[i] = dc_src->efl.slot[i]; - dc_dst->efl.slot[i].name = s; - } + + /* Copy the external file list */ + HDmemset(&(dc_dst->efl), 0, sizeof(dc_dst->efl)); + if (NULL==H5O_copy(H5O_EFL, &(dc_src->efl), &(dc_dst->efl))) { + HRETURN_ERROR(H5E_TEMPLATE, H5E_CANTINIT, NULL, + "unable to copy external file list message"); + } + + /* Copy the filter pipeline */ + if (NULL==H5O_copy(H5O_PLINE, &(dc_src->pline), &(dc_dst->pline))) { + HRETURN_ERROR(H5E_TEMPLATE, H5E_CANTINIT, NULL, + "unable to copy filter pipeline message"); } + + break; case H5P_DATASET_XFER: diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h index c7de8f6..028fa57 100644 --- a/src/H5Ppublic.h +++ b/src/H5Ppublic.h @@ -98,7 +98,8 @@ int H5Pget_nfilters(hid_t plist_id); H5Z_filter_t H5Pget_filter(hid_t plist_id, int filter, unsigned int *flags/*out*/, size_t *cd_nelmts/*out*/, - unsigned cd_values[]/*out*/); + unsigned cd_values[]/*out*/, + size_t namelen, char name[]); herr_t H5Pset_deflate (hid_t plist_id, unsigned aggression); herr_t H5Pset_cache (hid_t plist_id, int mdc_nelmts, size_t rdcc_nbytes, double rdcc_w0); @@ -1195,7 +1195,8 @@ H5S_set_extent_simple (H5S_t *space, int rank, const hsize_t *dims, /* Allocate space for the offset and set it to zeros */ if (NULL==(space->select.offset = H5MM_calloc(rank*sizeof(hssize_t)))) { - HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); + HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, + "memory allocation failed"); } /* shift out of the previous state to a "simple" dataspace */ @@ -1632,7 +1633,8 @@ H5Soffset_simple (hid_t space_id, const hssize_t *offset) /* Allocate space for new offset */ if(space->select.offset==NULL) { if (NULL==(space->select.offset = H5MM_malloc(sizeof(hssize_t)*space->extent.u.simple.rank))) { - HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); + HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, + "memory allocation failed"); } } diff --git a/src/H5Sselect.c b/src/H5Sselect.c index 2188470..d3e67b9 100644 --- a/src/H5Sselect.c +++ b/src/H5Sselect.c @@ -108,7 +108,8 @@ H5S_select_copy (H5S_t *dst, const H5S_t *src) /* Copy offset information */ if (NULL==(dst->select.offset = H5MM_calloc(src->extent.u.simple.rank*sizeof(hssize_t)))) { - HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed"); + HRETURN_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, + "memory allocation failed"); } if(src->select.offset!=NULL) HDmemcpy(dst->select.offset,src->select.offset,(src->extent.u.simple.rank*sizeof(hssize_t))); @@ -24,30 +24,10 @@ static intn interface_initialize_g = FALSE; static herr_t H5Z_init_interface (void); static void H5Z_term_interface (void); -/* - * The filter table maps filter identification numbers to structs that - * contain a pointers to the filter function and timing statistics. - */ -typedef struct H5Z_class_t { - H5Z_filter_t id; /*filter ID number */ - char *comment; /*comment for debugging */ - H5Z_func_t func; /*the filter function */ - -#ifdef H5Z_DEBUG - struct { - hsize_t total; /*total number of bytes processed */ - hsize_t errors; /*bytes of total attributable to errors */ - H5_timer_t timer; /*execution time including errors */ - } stats[2]; /*0=output, 1=input */ -#endif -} H5Z_class_t; - static size_t H5Z_table_alloc_g = 0; static size_t H5Z_table_used_g = 0; static H5Z_class_t *H5Z_table_g = NULL; -static H5Z_class_t *H5Z_find(H5Z_filter_t id); - /* Predefined filters */ static size_t H5Z_filter_deflate(uintn flags, size_t cd_nelmts, const uintn cd_values[], size_t nbytes, @@ -123,7 +103,7 @@ H5Z_term_interface (void) } /* Truncate the comment to fit in the field */ - strncpy(comment, H5Z_table_g[i].comment, sizeof comment); + strncpy(comment, H5Z_table_g[i].name, sizeof comment); comment[sizeof(comment)-1] = '\0'; /* @@ -151,7 +131,7 @@ H5Z_term_interface (void) /* Free the table */ for (i=0; i<H5Z_table_used_g; i++) { - H5MM_xfree(H5Z_table_g[i].comment); + H5MM_xfree(H5Z_table_g[i].name); } H5Z_table_g = H5MM_xfree(H5Z_table_g); H5Z_table_used_g = H5Z_table_alloc_g = 0; @@ -252,12 +232,12 @@ H5Z_register (H5Z_filter_t id, const char *comment, H5Z_func_t func) i = H5Z_table_used_g++; HDmemset(H5Z_table_g+i, 0, sizeof(H5Z_class_t)); H5Z_table_g[i].id = id; - H5Z_table_g[i].comment = H5MM_xstrdup(comment); + H5Z_table_g[i].name = H5MM_xstrdup(comment); H5Z_table_g[i].func = func; } else { /* Replace old contents */ - H5MM_xfree(H5Z_table_g[i].comment); - H5Z_table_g[i].comment = H5MM_xstrdup(comment); + H5MM_xfree(H5Z_table_g[i].name); + H5Z_table_g[i].name = H5MM_xstrdup(comment); H5Z_table_g[i].func = func; } @@ -354,7 +334,7 @@ H5Z_append(H5O_pline_t *pline, H5Z_filter_t filter, uintn flags, * *------------------------------------------------------------------------- */ -static H5Z_class_t * +H5Z_class_t * H5Z_find(H5Z_filter_t id) { size_t i; @@ -544,7 +524,10 @@ H5Z_filter_deflate (uintn flags, size_t cd_nelmts, const uintn cd_values[], z_stream z_strm; size_t nalloc = *buf_size; - outbuf = H5MM_malloc(nalloc); + if (NULL==(outbuf = H5MM_malloc(nalloc))) { + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0, + "memory allocation failed for deflate uncompression"); + } HDmemset(&z_strm, 0, sizeof(z_strm)); z_strm.next_in = *buf; z_strm.avail_in = nbytes; @@ -562,7 +545,12 @@ H5Z_filter_deflate (uintn flags, size_t cd_nelmts, const uintn cd_values[], } if (Z_OK==status && 0==z_strm.avail_out) { nalloc *= 2; - outbuf = H5MM_realloc(outbuf, nalloc); + if (NULL==(outbuf = H5MM_realloc(outbuf, nalloc))) { + inflateEnd(&z_strm); + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, 0, + "memory allocation failed for deflate " + "uncompression"); + } z_strm.next_out = (char*)outbuf + z_strm.total_out; z_strm.avail_out = nalloc - z_strm.total_out; } diff --git a/src/H5Zprivate.h b/src/H5Zprivate.h index 7330265..8cf88f6 100644 --- a/src/H5Zprivate.h +++ b/src/H5Zprivate.h @@ -10,6 +10,24 @@ #include <H5Zpublic.h> +/* + * The filter table maps filter identification numbers to structs that + * contain a pointers to the filter function and timing statistics. + */ +typedef struct H5Z_class_t { + H5Z_filter_t id; /*filter ID number */ + char *name; /*comment for debugging */ + H5Z_func_t func; /*the filter function */ + +#ifdef H5Z_DEBUG + struct { + hsize_t total; /*total number of bytes processed */ + hsize_t errors; /*bytes of total attributable to errors */ + H5_timer_t timer; /*execution time including errors */ + } stats[2]; /*0=output, 1=input */ +#endif +} H5Z_class_t; + struct H5O_pline_t; /*forward decl*/ herr_t H5Z_register(H5Z_filter_t id, const char *comment, H5Z_func_t filter); @@ -18,5 +36,7 @@ herr_t H5Z_append(struct H5O_pline_t *pline, H5Z_filter_t filter, uintn flags, herr_t H5Z_pipeline(H5F_t *f, const struct H5O_pline_t *pline, uintn flags, uintn *filter_mask/*in,out*/, size_t *nbytes/*in,out*/, size_t *buf_size/*in,out*/, void **buf/*in,out*/); +H5Z_class_t *H5Z_find(H5Z_filter_t id); + #endif diff --git a/src/H5public.h b/src/H5public.h index 30346b1..df6267a 100644 --- a/src/H5public.h +++ b/src/H5public.h @@ -27,7 +27,7 @@ /* Version numbers */ #define H5_VERS_MAJOR 1 /* For major interface/format changes */ #define H5_VERS_MINOR 0 /* For minor interface/format changes */ -#define H5_VERS_RELEASE 64 /* For tweaks, bug-fixes, or development */ +#define H5_VERS_RELEASE 65 /* For tweaks, bug-fixes, or development */ #define H5check() H5vers_check(H5_VERS_MAJOR,H5_VERS_MINOR, \ H5_VERS_RELEASE) |