summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.txt2
-rw-r--r--c++/src/CMakeLists.txt2
-rw-r--r--c++/src/cpp_doc_config2
-rwxr-xr-xconfigure22
-rw-r--r--configure.ac2
-rw-r--r--hl/src/H5LTparse.c144
-rw-r--r--hl/src/H5LTparse.h4
-rw-r--r--release_docs/RELEASE.txt2
-rw-r--r--src/H5Dcompact.c6
-rw-r--r--src/H5Dpkg.h1
-rw-r--r--src/H5Dtest.c41
-rw-r--r--src/H5public.h4
-rw-r--r--test/dsets.c104
13 files changed, 243 insertions, 93 deletions
diff --git a/README.txt b/README.txt
index 6fbbf59..f209f77 100644
--- a/README.txt
+++ b/README.txt
@@ -1,4 +1,4 @@
-HDF5 version 1.8.19-snap3 currently under development
+HDF5 version 1.8.19-snap4 currently under development
Please refer to the release_docs/INSTALL file for installation instructions.
------------------------------------------------------------------------------
diff --git a/c++/src/CMakeLists.txt b/c++/src/CMakeLists.txt
index 0a76d6f..579ef64 100644
--- a/c++/src/CMakeLists.txt
+++ b/c++/src/CMakeLists.txt
@@ -32,6 +32,7 @@ set (CPP_SRCS
${HDF5_CPP_SRC_SOURCE_DIR}/H5Group.cpp
${HDF5_CPP_SRC_SOURCE_DIR}/H5IdComponent.cpp
${HDF5_CPP_SRC_SOURCE_DIR}/H5IntType.cpp
+ ${HDF5_CPP_SRC_SOURCE_DIR}/H5LaccProp.cpp
${HDF5_CPP_SRC_SOURCE_DIR}/H5Library.cpp
${HDF5_CPP_SRC_SOURCE_DIR}/H5Location.cpp
${HDF5_CPP_SRC_SOURCE_DIR}/H5Object.cpp
@@ -68,6 +69,7 @@ set (CPP_HDRS
${HDF5_CPP_SRC_SOURCE_DIR}/H5IdComponent.h
${HDF5_CPP_SRC_SOURCE_DIR}/H5Include.h
${HDF5_CPP_SRC_SOURCE_DIR}/H5IntType.h
+ ${HDF5_CPP_SRC_SOURCE_DIR}/H5LaccProp.h
${HDF5_CPP_SRC_SOURCE_DIR}/H5Library.h
${HDF5_CPP_SRC_SOURCE_DIR}/H5Location.h
${HDF5_CPP_SRC_SOURCE_DIR}/H5Object.h
diff --git a/c++/src/cpp_doc_config b/c++/src/cpp_doc_config
index 27e581b..23e853c 100644
--- a/c++/src/cpp_doc_config
+++ b/c++/src/cpp_doc_config
@@ -38,7 +38,7 @@ PROJECT_NAME = "HDF5 C++ API"
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = "1.8.19-snap3 currently under development"
+PROJECT_NUMBER = "1.8.19-snap4 currently under development"
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
diff --git a/configure b/configure
index 336d3cd..8fc3a8b 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac Id.
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for HDF5 1.8.19-snap3.
+# Generated by GNU Autoconf 2.69 for HDF5 1.8.19-snap4.
#
# Report bugs to <help@hdfgroup.org>.
#
@@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='HDF5'
PACKAGE_TARNAME='hdf5'
-PACKAGE_VERSION='1.8.19-snap3'
-PACKAGE_STRING='HDF5 1.8.19-snap3'
+PACKAGE_VERSION='1.8.19-snap4'
+PACKAGE_STRING='HDF5 1.8.19-snap4'
PACKAGE_BUGREPORT='help@hdfgroup.org'
PACKAGE_URL=''
@@ -1476,7 +1476,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures HDF5 1.8.19-snap3 to adapt to many kinds of systems.
+\`configure' configures HDF5 1.8.19-snap4 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1546,7 +1546,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of HDF5 1.8.19-snap3:";;
+ short | recursive ) echo "Configuration of HDF5 1.8.19-snap4:";;
esac
cat <<\_ACEOF
@@ -1741,7 +1741,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-HDF5 configure 1.8.19-snap3
+HDF5 configure 1.8.19-snap4
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2678,7 +2678,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by HDF5 $as_me 1.8.19-snap3, which was
+It was created by HDF5 $as_me 1.8.19-snap4, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3549,7 +3549,7 @@ fi
# Define the identity of the package.
PACKAGE='hdf5'
- VERSION='1.8.19-snap3'
+ VERSION='1.8.19-snap4'
cat >>confdefs.h <<_ACEOF
@@ -29296,7 +29296,7 @@ Usage: $0 [OPTIONS]
Report bugs to <bug-libtool@gnu.org>."
lt_cl_version="\
-HDF5 config.lt 1.8.19-snap3
+HDF5 config.lt 1.8.19-snap4
configured by $0, generated by GNU Autoconf 2.69.
Copyright (C) 2011 Free Software Foundation, Inc.
@@ -31331,7 +31331,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by HDF5 $as_me 1.8.19-snap3, which was
+This file was extended by HDF5 $as_me 1.8.19-snap4, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -31397,7 +31397,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-HDF5 config.status 1.8.19-snap3
+HDF5 config.status 1.8.19-snap4
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index efa4f13..7f34ad6c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ AC_PREREQ([2.69])
## NOTE: Do not forget to change the version number here when we do a
## release!!!
##
-AC_INIT([HDF5], [1.8.19-snap3], [help@hdfgroup.org])
+AC_INIT([HDF5], [1.8.19-snap4], [help@hdfgroup.org])
AC_CONFIG_SRCDIR([src/H5.c])
AC_CONFIG_HEADERS([src/H5config.h])
diff --git a/hl/src/H5LTparse.c b/hl/src/H5LTparse.c
index 6ca95c54..36591d3 100644
--- a/hl/src/H5LTparse.c
+++ b/hl/src/H5LTparse.c
@@ -1641,229 +1641,229 @@ yyreduce:
switch (yyn)
{
case 2:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 101 "H5LTparse.y"
{ memset(arr_stack, 0, STACK_SIZE*sizeof(struct arr_info)); /*initialize here?*/ }
break;
case 3:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 102 "H5LTparse.y"
{ return (yyval.hid);}
break;
case 13:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 116 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I8BE); }
break;
case 14:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 117 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I8LE); }
break;
case 15:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 118 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I16BE); }
break;
case 16:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 119 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I16LE); }
break;
case 17:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 120 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I32BE); }
break;
case 18:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 121 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I32LE); }
break;
case 19:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 122 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I64BE); }
break;
case 20:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 123 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_I64LE); }
break;
case 21:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 124 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U8BE); }
break;
case 22:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 125 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U8LE); }
break;
case 23:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 126 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U16BE); }
break;
case 24:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 127 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U16LE); }
break;
case 25:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 128 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U32BE); }
break;
case 26:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 129 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U32LE); }
break;
case 27:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 130 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U64BE); }
break;
case 28:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 131 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_STD_U64LE); }
break;
case 29:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 132 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_CHAR); }
break;
case 30:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 133 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_SCHAR); }
break;
case 31:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 134 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_UCHAR); }
break;
case 32:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 135 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_SHORT); }
break;
case 33:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 136 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_USHORT); }
break;
case 34:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 137 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_INT); }
break;
case 35:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 138 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_UINT); }
break;
case 36:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 139 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_LONG); }
break;
case 37:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 140 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_ULONG); }
break;
case 38:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 141 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_LLONG); }
break;
case 39:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 142 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_ULLONG); }
break;
case 40:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 145 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_IEEE_F32BE); }
break;
case 41:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 146 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_IEEE_F32LE); }
break;
case 42:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 147 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_IEEE_F64BE); }
break;
case 43:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 148 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_IEEE_F64LE); }
break;
case 44:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 149 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_FLOAT); }
break;
case 45:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 150 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_DOUBLE); }
break;
case 46:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 151 "H5LTparse.y"
{ (yyval.hid) = H5Tcopy(H5T_NATIVE_LDOUBLE); }
break;
case 47:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 155 "H5LTparse.y"
{ csindex++; cmpd_stack[csindex].id = H5Tcreate(H5T_COMPOUND, 1); /*temporarily set size to 1*/ }
break;
case 48:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 157 "H5LTparse.y"
{ (yyval.hid) = cmpd_stack[csindex].id;
cmpd_stack[csindex].id = 0;
@@ -1873,13 +1873,13 @@ yyreduce:
break;
case 51:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 166 "H5LTparse.y"
{ cmpd_stack[csindex].is_field = 1; /*notify lexer a compound member is parsed*/ }
break;
case 52:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 168 "H5LTparse.y"
{
size_t origin_size, new_size;
@@ -1915,7 +1915,7 @@ yyreduce:
break;
case 53:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 201 "H5LTparse.y"
{
(yyval.sval) = yylval.sval;
@@ -1923,25 +1923,25 @@ yyreduce:
break;
case 54:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 206 "H5LTparse.y"
{ (yyval.ival) = 0; }
break;
case 55:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 208 "H5LTparse.y"
{ (yyval.ival) = yylval.ival; }
break;
case 57:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 212 "H5LTparse.y"
{ asindex++; /*pushd onto the stack*/ }
break;
case 58:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 214 "H5LTparse.y"
{
(yyval.hid) = H5Tarray_create2((yyvsp[(5) - (6)].hid), arr_stack[asindex].ndims, arr_stack[asindex].dims);
@@ -1952,13 +1952,13 @@ yyreduce:
break;
case 61:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 224 "H5LTparse.y"
{ arr_stack[asindex].is_dim = 1; /*notice lexer of dimension size*/ }
break;
case 62:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 225 "H5LTparse.y"
{ unsigned ndims = arr_stack[asindex].ndims;
arr_stack[asindex].dims[ndims] = (hsize_t)yylval.ival;
@@ -1968,19 +1968,19 @@ yyreduce:
break;
case 65:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 236 "H5LTparse.y"
{ (yyval.hid) = H5Tvlen_create((yyvsp[(3) - (4)].hid)); H5Tclose((yyvsp[(3) - (4)].hid)); }
break;
case 66:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 241 "H5LTparse.y"
{ is_opq_size = 1; }
break;
case 67:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 242 "H5LTparse.y"
{
size_t size = (size_t)yylval.ival;
@@ -1990,13 +1990,13 @@ yyreduce:
break;
case 68:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 247 "H5LTparse.y"
{ is_opq_tag = 1; }
break;
case 69:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 248 "H5LTparse.y"
{
H5Tset_tag((yyvsp[(7) - (13)].hid), yylval.sval);
@@ -2005,19 +2005,19 @@ yyreduce:
break;
case 70:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 252 "H5LTparse.y"
{ (yyval.hid) = (yyvsp[(7) - (15)].hid); }
break;
case 73:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 260 "H5LTparse.y"
{ is_str_size = 1; }
break;
case 74:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 261 "H5LTparse.y"
{
if((yyvsp[(5) - (6)].ival) == H5T_VARIABLE_TOKEN)
@@ -2029,7 +2029,7 @@ yyreduce:
break;
case 75:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 269 "H5LTparse.y"
{
if((yyvsp[(9) - (10)].ival) == H5T_STR_NULLTERM_TOKEN)
@@ -2042,7 +2042,7 @@ yyreduce:
break;
case 76:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 278 "H5LTparse.y"
{
if((yyvsp[(13) - (14)].ival) == H5T_CSET_ASCII_TOKEN)
@@ -2053,7 +2053,7 @@ yyreduce:
break;
case 77:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 285 "H5LTparse.y"
{
if((yyvsp[(17) - (18)].hid) == H5T_C_S1_TOKEN)
@@ -2064,7 +2064,7 @@ yyreduce:
break;
case 78:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 292 "H5LTparse.y"
{
hid_t str_id = (yyvsp[(19) - (20)].hid);
@@ -2085,67 +2085,67 @@ yyreduce:
break;
case 79:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 309 "H5LTparse.y"
{(yyval.ival) = H5T_VARIABLE_TOKEN;}
break;
case 81:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 312 "H5LTparse.y"
{(yyval.ival) = H5T_STR_NULLTERM_TOKEN;}
break;
case 82:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 313 "H5LTparse.y"
{(yyval.ival) = H5T_STR_NULLPAD_TOKEN;}
break;
case 83:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 314 "H5LTparse.y"
{(yyval.ival) = H5T_STR_SPACEPAD_TOKEN;}
break;
case 84:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 316 "H5LTparse.y"
{(yyval.ival) = H5T_CSET_ASCII_TOKEN;}
break;
case 85:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 317 "H5LTparse.y"
{(yyval.ival) = H5T_CSET_UTF8_TOKEN;}
break;
case 86:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 319 "H5LTparse.y"
{(yyval.hid) = H5T_C_S1_TOKEN;}
break;
case 87:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 320 "H5LTparse.y"
{(yyval.hid) = H5T_FORTRAN_S1_TOKEN;}
break;
case 88:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 324 "H5LTparse.y"
{ is_enum = 1; enum_id = H5Tenum_create((yyvsp[(3) - (4)].hid)); H5Tclose((yyvsp[(3) - (4)].hid)); }
break;
case 89:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 326 "H5LTparse.y"
{ is_enum = 0; /*reset*/ (yyval.hid) = enum_id; }
break;
case 92:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 331 "H5LTparse.y"
{
is_enum_memb = 1; /*indicate member of enum*/
@@ -2158,7 +2158,7 @@ yyreduce:
break;
case 93:
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 340 "H5LTparse.y"
{
char char_val=(char)yylval.ival;
@@ -2205,7 +2205,7 @@ yyreduce:
break;
-/* Line 1807 of yacc.c */
+/* Line 1792 of yacc.c */
#line 2191 "H5LTparse.c"
default: break;
}
diff --git a/hl/src/H5LTparse.h b/hl/src/H5LTparse.h
index 621dacd..1461830 100644
--- a/hl/src/H5LTparse.h
+++ b/hl/src/H5LTparse.h
@@ -109,7 +109,7 @@ extern int H5LTyydebug;
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE
{
-/* Line 2065 of yacc.c */
+/* Line 2058 of yacc.c */
#line 68 "H5LTparse.y"
int ival; /*for integer token*/
@@ -117,7 +117,7 @@ typedef union YYSTYPE
hid_t hid; /*for hid_t token*/
-/* Line 2065 of yacc.c */
+/* Line 2058 of yacc.c */
#line 122 "H5LTparse.h"
} YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
diff --git a/release_docs/RELEASE.txt b/release_docs/RELEASE.txt
index d30106f..21e3362 100644
--- a/release_docs/RELEASE.txt
+++ b/release_docs/RELEASE.txt
@@ -1,4 +1,4 @@
-HDF5 version 1.8.19-snap3 currently under development
+HDF5 version 1.8.19-snap4 currently under development
================================================================================
INTRODUCTION
diff --git a/src/H5Dcompact.c b/src/H5Dcompact.c
index 0dd9797..b142f3b 100644
--- a/src/H5Dcompact.c
+++ b/src/H5Dcompact.c
@@ -371,9 +371,11 @@ H5D__compact_flush(H5D_t *dset, hid_t dxpl_id)
/* Check if the buffered compact information is dirty */
if(dset->shared->layout.storage.u.compact.dirty) {
- if(H5O_msg_write(&(dset->oloc), H5O_LAYOUT_ID, 0, H5O_UPDATE_TIME, &(dset->shared->layout), dxpl_id) < 0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to update layout message")
dset->shared->layout.storage.u.compact.dirty = FALSE;
+ if(H5O_msg_write(&(dset->oloc), H5O_LAYOUT_ID, 0, H5O_UPDATE_TIME, &(dset->shared->layout), dxpl_id) < 0) {
+ dset->shared->layout.storage.u.compact.dirty = TRUE;
+ HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to update layout message")
+ }
} /* end if */
done:
diff --git a/src/H5Dpkg.h b/src/H5Dpkg.h
index b5ad673..8eaa1a4 100644
--- a/src/H5Dpkg.h
+++ b/src/H5Dpkg.h
@@ -712,6 +712,7 @@ H5_DLL htri_t H5D__mpio_opt_possible(const H5D_io_info_t *io_info,
#ifdef H5D_TESTING
H5_DLL herr_t H5D__layout_version_test(hid_t did, unsigned *version);
H5_DLL herr_t H5D__layout_contig_size_test(hid_t did, hsize_t *size);
+H5_DLL herr_t H5D__layout_compact_dirty_test(hid_t did, hbool_t *dirty);
H5_DLL herr_t H5D__current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused);
#endif /* H5D_TESTING */
diff --git a/src/H5Dtest.c b/src/H5Dtest.c
index e824be6..c74b844 100644
--- a/src/H5Dtest.c
+++ b/src/H5Dtest.c
@@ -142,6 +142,47 @@ done:
/*--------------------------------------------------------------------------
NAME
+ H5D__layout_compact_dirty_test
+ PURPOSE
+ Determine the "dirty" flag of a compact layout for a dataset's layout information
+ USAGE
+ herr_t H5D__layout_compact_dirty_test(did, dirty)
+ hid_t did; IN: Dataset to query
+ hbool_t *dirty; OUT: Pointer to location to place "dirty" info
+ RETURNS
+ Non-negative on success, negative on failure
+ DESCRIPTION
+ Checks the "dirty" flag of a compact dataset.
+ GLOBAL VARIABLES
+ COMMENTS, BUGS, ASSUMPTIONS
+ DO NOT USE THIS FUNCTION FOR ANYTHING EXCEPT TESTING
+ EXAMPLES
+ REVISION LOG
+--------------------------------------------------------------------------*/
+herr_t
+H5D__layout_compact_dirty_test(hid_t did, hbool_t *dirty)
+{
+ H5D_t *dset; /* Pointer to dataset to query */
+ herr_t ret_value = SUCCEED; /* return value */
+
+ FUNC_ENTER_PACKAGE
+
+ /* Check args */
+ if(NULL == (dset = (H5D_t *)H5I_object_verify(did, H5I_DATASET)))
+ HGOTO_ERROR(H5E_DATASET, H5E_BADTYPE, FAIL, "not a dataset")
+
+ if(dirty) {
+ HDassert(dset->shared->layout.type == H5D_COMPACT);
+ *dirty = dset->shared->layout.storage.u.compact.dirty;
+ } /* end if */
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* H5D__layout_compact_dirty_test() */
+
+
+/*--------------------------------------------------------------------------
+ NAME
H5D__current_cache_size_test
PURPOSE
Determine current the size of the dataset's chunk cache
diff --git a/src/H5public.h b/src/H5public.h
index a3fc793..0f7beda 100644
--- a/src/H5public.h
+++ b/src/H5public.h
@@ -93,9 +93,9 @@ extern "C" {
#define H5_VERS_MAJOR 1 /* For major interface/format changes */
#define H5_VERS_MINOR 8 /* For minor interface/format changes */
#define H5_VERS_RELEASE 19 /* For tweaks, bug-fixes, or development */
-#define H5_VERS_SUBRELEASE "snap3" /* For pre-releases like snap0 */
+#define H5_VERS_SUBRELEASE "snap4" /* For pre-releases like snap0 */
/* Empty string for real releases. */
-#define H5_VERS_INFO "HDF5 library version: 1.8.19-snap3" /* Full version string */
+#define H5_VERS_INFO "HDF5 library version: 1.8.19-snap4" /* Full version string */
#define H5check() H5check_version(H5_VERS_MAJOR,H5_VERS_MINOR, \
H5_VERS_RELEASE)
diff --git a/test/dsets.c b/test/dsets.c
index 94a2d45..c936e3c 100644
--- a/test/dsets.c
+++ b/test/dsets.c
@@ -9081,6 +9081,109 @@ error:
return -1;
} /* end test_gather_error() */
+/*-------------------------------------------------------------------------
+ * Function: test_compact_dirty
+ *
+ * Purpose: Verify that issue #2 reported in HDFFV-10051 is fixed:
+ * --the layout "dirty" flag for a compact dataset is not reset
+ * properly after flushing the data at dataset close.
+ *
+ * Return: Success: 0
+ * Failure: -1
+ *
+ * Programmer: Vailin Choi; April 2017
+ *
+ *-------------------------------------------------------------------------
+ */
+static herr_t
+test_compact_dirty(hid_t fapl)
+{
+ hid_t fid = -1; /* File ID */
+ hid_t did = -1; /* Dataset ID */
+ hid_t sid = -1; /* Dataspace ID */
+ hid_t dcpl = -1; /* Dataset creation property list */
+ hsize_t dims[1] = {10}; /* Dimension */
+ int wbuf[10]; /* Data buffer */
+ char filename[FILENAME_BUF_SIZE]; /* Filename */
+ int i; /* Local index variable */
+ hbool_t dirty; /* The dirty flag */
+
+ TESTING("compact dataset repeated open/close and dirty flag");
+
+ /* Create a file */
+ h5_fixname(FILENAME[1], fapl, filename, sizeof filename);
+ if((fid = H5Fcreate(filename, H5F_ACC_TRUNC, H5P_DEFAULT, fapl)) < 0)
+ TEST_ERROR
+
+ /* Initialize data */
+ for(i = 0; i < 10; i++)
+ wbuf[i] = i;
+
+ /* Create dataspace */
+ if((sid = H5Screate_simple(1, dims, NULL)) < 0)
+ TEST_ERROR
+
+ /* Set compact layout */
+ if((dcpl = H5Pcreate(H5P_DATASET_CREATE)) < 0)
+ TEST_ERROR
+ if(H5Pset_layout(dcpl, H5D_COMPACT) < 0)
+ TEST_ERROR
+ if(H5Pset_alloc_time(dcpl, H5D_ALLOC_TIME_EARLY) < 0)
+ TEST_ERROR
+
+ /* Create a compact dataset */
+ if((did = H5Dcreate2(fid, DSET_COMPACT_MAX_NAME, H5T_NATIVE_INT, sid, H5P_DEFAULT, dcpl, H5P_DEFAULT)) < 0)
+ TEST_ERROR
+
+ /* Write to the dataset */
+ if(H5Dwrite(did, H5T_NATIVE_INT, H5S_ALL, H5S_ALL, H5P_DEFAULT, wbuf) < 0)
+ TEST_ERROR
+
+ /* Close the dataset */
+ if(H5Dclose(did) < 0)
+ TEST_ERROR
+
+ /* Open the dataset */
+ if((did = H5Dopen2(fid, DSET_COMPACT_MAX_NAME, H5P_DEFAULT)) < 0)
+ TEST_ERROR
+
+ /* Retrieve the "dirty" flag from the compact dataset layout */
+ if(H5D__layout_compact_dirty_test(did, &dirty) < 0)
+ TEST_ERROR
+
+ /* Verify that the "dirty" flag is false */
+ if(dirty)
+ TEST_ERROR
+
+ /* Close the dataset */
+ if(H5Dclose(did) < 0)
+ TEST_ERROR
+
+ /* Close the dataspace */
+ if(H5Sclose(sid) < 0)
+ TEST_ERROR
+
+ /* Close the dataset creation property list */
+ if(H5Pclose(dcpl) < 0)
+ TEST_ERROR
+
+ /* Close the file */
+ if(H5Fclose(fid) < 0)
+ TEST_ERROR
+
+ PASSED();
+ return 0;
+
+error:
+ H5E_BEGIN_TRY {
+ H5Sclose(sid);
+ H5Pclose(dcpl);
+ H5Dclose(did);
+ H5Fclose(fid);
+ } H5E_END_TRY;
+ return -1;
+} /* test_compact_dirty() */
+
/*-------------------------------------------------------------------------
* Function: main
@@ -9166,6 +9269,7 @@ main(void)
nerrors += (test_simple_io(envval, my_fapl) < 0 ? 1 : 0);
nerrors += (test_compact_io(my_fapl) < 0 ? 1 : 0);
nerrors += (test_max_compact(my_fapl) < 0 ? 1 : 0);
+ nerrors += (test_compact_dirty(my_fapl) < 0 ? 1 : 0);
nerrors += (test_conv_buffer(file) < 0 ? 1 : 0);
nerrors += (test_tconv(file) < 0 ? 1 : 0);
nerrors += (test_filters(file, my_fapl) < 0 ? 1 : 0);