Also cleans up the links test, which had a ton of copy-and-pasted incorrect negative error checks (Calling TEST_ERROR within H5E_BEGIN_TRY / H5E_END_TRY pairs will goto out of the pair, leaving errors suppressed).
These files are infrequently updated and generating them adds an
annoying dependency on Perl. We're checking them in and will
probably add a GitHub action to check if anything is stale
when creating a PR.
Adds:
* H5Edefin.h
* H5Einit.h
* H5Emajdef.h
* H5Emindef.h
* H5Epubgen.h
* H5Eterm.h
* H5overflow.h
* H5version.h
Solaris Studio hasn't been updated in almost a decade and the last
version (12.4, circa 2015) doesn't seem to fully support C11.
This PR removes some work-arounds for things like __attribute__()
support.
This is where most people will expect to find license information. The
COPYING_LBNL_HDF5 file has also been renamed to LICENSE_LBNL_HDF5.
The licenses are unchanged.
The high-level GIF tools, h52gif and gif2h5, have unfixed CVE issues
(with no proof-of-concept files). They are not critical tools, are not
well maintained, and are an odd fit for building with the library.
Because of this, they have been removed. We may move them to a separate
repository in the future.
Ignores some of the older Autotools platform files, since the Autotools
will be dropped in the next major release (and we don't have
compilers on which to test, anyway).
Also drops support for the old, non-compliant MSVC
preprocessor.
When we initialize the floating-point types at library startup, it's
possible to raise floating-point exceptions when we check which things
are supported. Normally, we clear these floating-point exceptions via
feclearexcept(FE_INVALID), but FE_INVALID may not be present on all
systems. Specifically, this was reported as being a problem when using
Emscripten 3.1.68 to compile HDF5 1.14.5 to WebAssembly.
We've added an #ifdef FE_INVALID block around the exception clearing
code to correct this.
Fixes#4952
* Fix for issue #4849 that settings in fapl libver bounds causes unexpected H5Fopen failures.
File with non-SWMR-write access can now be opened without regard for superblock version.
Due to the fix, H5Fstart_swmr_write() also needs to be modified as well as the tests for libver bounds.
The "RFC: Setting Bounds for Object Creation in HDF5 1.10.0" is also updated to reflect the changes.
* Fix c++ libver bound test failure.
Cleanup and prepare for thread-safety changes.
Big ideas:
* Wrap H5VL_class_t with H5VL_connector_t, so use of the class can be refcounted within the H5VL package, instead of relying on storing an ID within the H5VL_t struct and incrementing & decrementing the ID's refcount.
* Register H5VL_connector_t* for VOL connector IDs, instead of the H5VL_class_t*
* Stop other packages from rummaging around inside H5VL_connector_t and H5VL_object_t data structures, so that the H5VL package can change implementation details without coupled changes throughout the library
Small things:
* Simplified the coding for creating links
* Moved some routines into more logical locations
* Remove H5E_clear_stack() call
* Add note to H5F_clear_stack() to dissuade use
* Committing clang-format changes
* Eliminate "unknown" case from H5O__obj_type_real()
Also minor optimizations and warning cleanups
In H5F__accum_reset(), when H5F__accum_flush() failed, the freeing of
f_sh->accum.buf was never reached, causing resource leak.
@fortnern added the third argument to H5F__accum_reset() so we can free
f_sh->accum.buf when we close the file, that is, when H5F__accum_reset()
is called from the H5F__dest() route, and can leave the accumulator in place
otherwise.
* Fixes a segfault in h5dump
The B-tree node level was corrupted, resulting in a segfault later.
This PR adds a check to detect when the node level is greater than
the number of entries and issue an error instead.
Fixes GH-4432
Fixes a bug where the vector I/O sizes weren't being extended when
one of the entries in the array is 0. This caused an over-read of
the I/O sizes buffer and on some machines would cause a memory
allocation failure due to the calculated I/O vector size being too
large.
Rename existing recursive R/W locks from H5TS_rw_lock_t to H5TS_rec_rwlock_t, so it's more obvious that they are recursive.
Add non-recursive R/W lock, H5TS_rwlock_t
Add spinlock, H5TS_spinlock_t
Add an atomic void pointer, H5TS_atomic_voidp_t
User's application segfaulted because the returned value H5I_BADID wasn't
detected when H5I_get_type() was called. This PR adds checks for invalid
file/group identifiers passed into H5Gmove2.
This defect occurs in many other places, hence, issue GH-4764.
Fixes#4737
This PR switches H5I_object() and H5I_object_verify() to H5VL_vol_object() and H5VL_vol_object_verify(), respectively, in the H5M APIs and H5Gdeprec (was left out by mistake). This completes the fixes of issue GH-4730.
This PR switches H5I_object() to H5VL_vol_object() in H5O and H5T APIs. H5M is the last one and left out of this PR because it needs more work
in documentation and there is no test for the API functions.
Fixes GH-4730