[svn-r609] Debugging.html

Fixed errors

H5.c
	Fixed core dump with setvbuf() for debugging.

H5Fistore.c
	Fixed bug with sparse datasets.

H5Omtime.c
	Found a typo in "Posix Programmer's Guide".  The `%z' in the
	strftime() should be `%Z' instead.

H5T.c
H5Tpublic.h
	Improved api tracing for H5Tinsert_array().

h5tools.c
	Doesn't dump core for empty datasets.
This commit is contained in:
Robb Matzke 1998-08-20 17:57:35 -05:00
parent 2c61dcc3ee
commit 49133159c8
11 changed files with 393 additions and 355 deletions

View File

@ -295,4 +295,3 @@
./tools/h5repart.c
./tools/h5tools.c
./tools/h5tools.h

2
README
View File

@ -1,4 +1,4 @@
This is hdf5-1.0.69 released on Thu Aug 20 04:19:20 CDT 1998
This is hdf5-1.0.70 released on Thu Aug 20 17:55:38 CDT 1998
Please refer to the INSTALL file for installation instructions.
------------------------------------------------------------------------------

View File

@ -10,7 +10,7 @@
<h2>Introduction</h2>
<p>The HDF5 library contains a number of debugging features to
make programmers lives easier including the ability to print
make programmers' lives easier including the ability to print
detailed error messages, check invariant conditions, display
timings and other statistics, and trace API function calls and
return values.
@ -27,7 +27,7 @@
<br><br>
<dt><b>Invariant Conditions</b>
<dd>Unless <code>NDEBUG</code> is defined during compiling the
<dd>Unless <code>NDEBUG</code> is defined during compiling, the
library will include code to verify that invariant conditions
have the expected values. When a problem is detected the
library will display the file and line number within the
@ -63,14 +63,17 @@
<p>
<center>
<table border align=center width="100%">
<caption align=top><h4>Example: An Error Message</h4></caption>
<tr>
<td>
<p><code><pre>
HDF5-DIAG: Error detected in thread 0. Back trace follows.
#000: H5T.c line 462 in H5Tclose(): predefined data type
major(01): Function argument
minor(05): Bad value
#000: H5F.c line 1245 in H5Fopen(): unable to open file
major(04): File interface
minor(10): Unable to open file
#001: H5F.c line 846 in H5F_open(): file does not exist
major(04): File interface
minor(10): Unable to open file
</code></pre>
</td>
</tr>
@ -78,7 +81,7 @@ HDF5-DIAG: Error detected in thread 0. Back trace follows.
</center>
<p>The error handling package (H5E) is described
<a href="Errors.html">here</a>.
<a href="Errors.html">elsewhere</a>.
<h2>Invariant Conditions</h2>
@ -92,10 +95,10 @@ HDF5-DIAG: Error detected in thread 0. Back trace follows.
<p>
<center>
<table border align=center width="100%">
<caption align=top><h4>Example: A Failed Assertion</h4></caption>
<tr>
<td>
<p><code><pre>
Assertion failed: H5.c:123: i&lt;NELMTS(H5_debug_g)
IOT Trap, core dumped.
</code></pre>
@ -263,10 +266,10 @@ IOT Trap, core dumped.
<p>
<center>
<table border align=center width="100%">
<caption align=top><b>Sample Output</b></caption>
<tr>
<td>
<code><pre>
H5Tcopy(type=184549388) = 184549419 (type);
H5Tcopy(type=184549392) = 184549424 (type);
H5Tlock(type=184549424) = SUCCEED;
@ -297,7 +300,6 @@ HDF5-DIAG: Error detected in thread 0. Back trace follows.
<p>
<center>
<table border align=center width="100%">
<caption align=top><b>Execution Examples</b></caption>
<tr>
<td>To display the trace on the standard error stream:
<code><pre>
@ -378,6 +380,7 @@ $ env HDF5_DEBUG="55 trace" a.out 55>trace-output
<tr>
<td>
<code><pre>
$ ../bin/trace *.c
H5E.c: in function `H5Ewalk_cb':
H5E.c:336: warning: trace info was not inserted
@ -402,7 +405,7 @@ H5E.c:336: warning: trace info was not inserted
<address><a href="mailto:matzke@llnl.gov">Robb Matzke</a></address>
<!-- Created: Wed Jun 17 12:29:12 EDT 1998 -->
<!-- hhmts start -->
Last modified: Wed Aug 19 15:21:35 PDT 1998
Last modified: Thu Aug 20 10:43:42 PDT 1998
<!-- hhmts end -->
</body>
</html>

View File

@ -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,111 +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 \
H5public.h \
H5config.h \
H5Iprivate.h \
H5Ipublic.h \
H5Eprivate.h
H5F.o: \
H5F.c \
H5private.h \
H5public.h \
H5config.h \
H5Aprivate.h \
H5Apublic.h \
H5Ipublic.h \
H5Gprivate.h \
H5Gpublic.h \
H5Bprivate.h \
H5Bpublic.h \
H5Fprivate.h \
H5Fpublic.h \
H5Dpublic.h \
H5Dprivate.h \
H5Oprivate.h \
H5Opublic.h \
H5HGprivate.h \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h \
H5Sprivate.h \
H5Spublic.h \
H5Zprivate.h \
H5Zpublic.h \
H5Iprivate.h \
H5ACprivate.h \
H5ACpublic.h \
H5Eprivate.h \
H5Epublic.h \
H5MMprivate.h \
H5MMpublic.h
H5Farray.o: \
H5Farray.c \
H5private.h \
@ -203,55 +67,6 @@ H5Fcore.o: \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h
H5Ffamily.o: \
H5Ffamily.c \
H5private.h \
H5public.h \
H5config.h \
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 \
H5public.h \
H5config.h \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h \
H5Fprivate.h \
H5Fpublic.h \
H5Dpublic.h \
H5MMprivate.h \
H5MMpublic.h
H5Fmpio.o: \
H5Fmpio.c \
H5private.h \
@ -450,24 +265,6 @@ H5HG.o: \
H5MFprivate.h \
H5MFpublic.h \
H5MMprivate.h
H5HL.o: \
H5HL.c \
H5private.h \
H5public.h \
H5config.h \
H5ACprivate.h \
H5ACpublic.h \
H5Fprivate.h \
H5Fpublic.h \
H5Ipublic.h \
H5Dpublic.h \
H5Eprivate.h \
H5Epublic.h \
H5HLprivate.h \
H5HLpublic.h \
H5MFprivate.h \
H5MFpublic.h \
H5MMprivate.h
H5I.o: \
H5I.c \
H5private.h \
@ -476,14 +273,6 @@ H5I.o: \
H5Iprivate.h \
H5Ipublic.h \
H5Eprivate.h
H5MF.o: \
H5MF.c \
H5private.h \
H5public.h \
H5config.h \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h
H5MM.o: \
H5MM.c \
H5private.h \
@ -492,34 +281,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 \
@ -668,29 +429,6 @@ H5Olayout.o: \
H5Sprivate.h \
H5Spublic.h \
H5Zprivate.h
H5Omtime.o: \
H5Omtime.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
H5Oname.o: \
H5Oname.c \
H5private.h \
@ -829,29 +567,6 @@ H5P.o: \
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 \
@ -898,29 +613,6 @@ H5Shyper.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5Smpio.o: \
H5Smpio.c \
H5private.h \
H5public.h \
H5config.h \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.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
H5Spoint.o: \
H5Spoint.c \
H5private.h \
@ -972,34 +664,6 @@ H5Sselect.o: \
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 \
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 \
H5Iprivate.h \
H5Eprivate.h \
H5Epublic.h \
H5MMprivate.h
H5Tbit.o: \
H5Tbit.c \
H5private.h \
@ -1090,6 +754,143 @@ H5V.o: \
H5Tpublic.h \
H5Sprivate.h \
H5Spublic.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
H5E.o: \
H5E.c \
H5private.h \
H5public.h \
H5config.h \
H5Iprivate.h \
H5Ipublic.h \
H5Eprivate.h
H5Ffamily.o: \
H5Ffamily.c \
H5private.h \
H5public.h \
H5config.h \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h
H5Flow.o: \
H5Flow.c \
H5private.h \
H5public.h \
H5config.h \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h \
H5Fprivate.h \
H5Fpublic.h \
H5Dpublic.h \
H5MMprivate.h \
H5MMpublic.h
H5HL.o: \
H5HL.c \
H5private.h \
H5public.h \
H5config.h \
H5ACprivate.h \
H5ACpublic.h \
H5Fprivate.h \
H5Fpublic.h \
H5Ipublic.h \
H5Dpublic.h \
H5Eprivate.h \
H5Epublic.h \
H5HLprivate.h \
H5HLpublic.h \
H5MFprivate.h \
H5MFpublic.h \
H5MMprivate.h
H5MF.o: \
H5MF.c \
H5private.h \
H5public.h \
H5config.h \
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
H5Smpio.o: \
H5Smpio.c \
H5private.h \
H5public.h \
H5config.h \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.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
H5Z.o: \
H5Z.c \
H5private.h \
@ -1117,3 +918,202 @@ H5Z.o: \
H5Spublic.h \
H5Zprivate.h \
H5Zpublic.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
H5F.o: \
H5F.c \
H5private.h \
H5public.h \
H5config.h \
H5Aprivate.h \
H5Apublic.h \
H5Ipublic.h \
H5Gprivate.h \
H5Gpublic.h \
H5Bprivate.h \
H5Bpublic.h \
H5Fprivate.h \
H5Fpublic.h \
H5Dpublic.h \
H5Dprivate.h \
H5Oprivate.h \
H5Opublic.h \
H5HGprivate.h \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h \
H5Sprivate.h \
H5Spublic.h \
H5Zprivate.h \
H5Zpublic.h \
H5Iprivate.h \
H5ACprivate.h \
H5ACpublic.h \
H5Eprivate.h \
H5Epublic.h \
H5MMprivate.h \
H5MMpublic.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
H5T.o: \
H5T.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 \
H5Iprivate.h \
H5Eprivate.h \
H5Epublic.h \
H5MMprivate.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
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
H5Omtime.o: \
H5Omtime.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

View File

@ -391,8 +391,9 @@ H5_debug_mask(const char *s)
} else if (isdigit(*s)) {
int fd = (int)HDstrtol (s, &rest, 0);
stream = HDfdopen (fd, "w");
setvbuf (stream, NULL, _IOLBF, 0);
if ((stream=HDfdopen(fd, "w"))) {
setvbuf (stream, NULL, _IOLBF, 0);
}
s = rest;
} else {
s++;
@ -2124,7 +2125,11 @@ H5_trace (hbool_t returning, const char *func, const char *type, ...)
}
} else {
vp = va_arg (ap, void*);
fprintf (out, "0x%lx", (unsigned long)vp);
if (vp) {
fprintf (out, "0x%lx", (unsigned long)vp);
} else {
fprintf(out, "NULL");
}
}
break;

View File

@ -471,6 +471,12 @@ H5F_istore_new_node(H5F_t *f, H5B_ins_t op,
* that describes the chunk) and RT_KEY is the right key (the
* one that describes the next or last chunk).
*
* Note: It's possible that the chunk isn't really found. For
* instance, in a sparse dataset the requested chunk might fall
* between two stored chunks in which case this function is
* called with the maximum stored chunk indices less than the
* requested chunk indices.
*
* Return: Success: SUCCEED with information about the chunk
* returned through the UDATA argument.
*
@ -500,6 +506,13 @@ H5F_istore_found(H5F_t __unused__ *f, const haddr_t *addr,
assert(udata);
assert(lt_key);
/* Is this *really* the requested chunk? */
for (i=0; i<udata->mesg.ndims; i++) {
if (udata->key.offset[i]>=lt_key->offset[i]+udata->mesg.dim[i]) {
HRETURN(FAIL);
}
}
/* Initialize return values */
udata->addr = *addr;
udata->key.nbytes = lt_key->nbytes;

View File

@ -471,6 +471,12 @@ H5F_istore_new_node(H5F_t *f, H5B_ins_t op,
* that describes the chunk) and RT_KEY is the right key (the
* one that describes the next or last chunk).
*
* Note: It's possible that the chunk isn't really found. For
* instance, in a sparse dataset the requested chunk might fall
* between two stored chunks in which case this function is
* called with the maximum stored chunk indices less than the
* requested chunk indices.
*
* Return: Success: SUCCEED with information about the chunk
* returned through the UDATA argument.
*
@ -500,6 +506,13 @@ H5F_istore_found(H5F_t __unused__ *f, const haddr_t *addr,
assert(udata);
assert(lt_key);
/* Is this *really* the requested chunk? */
for (i=0; i<udata->mesg.ndims; i++) {
if (udata->key.offset[i]>=lt_key->offset[i]+udata->mesg.dim[i]) {
HRETURN(FAIL);
}
}
/* Initialize return values */
udata->addr = *addr;
udata->key.nbytes = lt_key->nbytes;

View File

@ -307,7 +307,7 @@ H5O_mtime_debug(H5F_t __unused__ *f, const void *_mesg, FILE *stream,
tm = localtime(mesg);
strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S %z", tm);
strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S %Z", tm);
fprintf(stream, "%*s%-*s %s\n", indent, "", fwidth,
"Time:", buf);

View File

@ -2829,7 +2829,7 @@ H5Tinsert (hid_t parent_id, const char *name, size_t offset, hid_t member_id)
*/
herr_t
H5Tinsert_array (hid_t parent_id, const char *name, size_t offset,
int ndims, const size_t *dim, const int *perm,
int ndims, const size_t dim[/*ndims*/], const int *perm,
hid_t member_id)
{
H5T_t *parent = NULL; /*the compound parent data type */

View File

@ -383,7 +383,7 @@ hbool_t H5Tcommitted (hid_t type_id);
herr_t H5Tinsert (hid_t parent_id, const char *name, size_t offset,
hid_t member_id);
herr_t H5Tinsert_array (hid_t parent_id, const char *name, size_t offset,
int ndims, const size_t *dim, const int *perm,
int ndims, const size_t dim[], const int *perm,
hid_t member_id);
herr_t H5Tpack (hid_t type_id);

View File

@ -22,7 +22,11 @@
* size of that temporary buffer in bytes. For efficiency's sake, choose the
* largest value suitable for your machine (for testing use a small value).
*/
#if 0
#define H5DUMP_BUFSIZE (1024*1024)
#else
#define H5DUMP_BUFSIZE (1024)
#endif
#define OPT(X,S) ((X)?(X):(S))
#define MIN(X,Y) ((X)<(Y)?(X):(Y))
@ -258,6 +262,7 @@ h5dump_simple(FILE *stream, const h5dump_t *info, hid_t dset, hid_t p_type)
for (i=0, p_nelmts=1; i<(hsize_t)ndims; i++) {
p_nelmts *= p_max_idx[i]-p_min_idx[i];
}
if (0==p_nelmts) return 0; /*nothing to print*/
/*
* Determine the strip mine size and allocate a buffer. The strip mine is