summaryrefslogtreecommitdiffstats
path: root/src/H5VLint.c
diff options
context:
space:
mode:
authorjhendersonHDF <jhenderson@hdfgroup.org>2021-03-15 13:16:41 (GMT)
committerGitHub <noreply@github.com>2021-03-15 13:16:41 (GMT)
commitc193d436f512e73be6569e56bf875bb2673ebdf8 (patch)
tree612757b041e867107053d03a2eb4ab1a9600bf51 /src/H5VLint.c
parenta09e1ea2191ad0ea2a72f7bd519b2cc95f218328 (diff)
downloadhdf5-c193d436f512e73be6569e56bf875bb2673ebdf8.zip
hdf5-c193d436f512e73be6569e56bf875bb2673ebdf8.tar.gz
hdf5-c193d436f512e73be6569e56bf875bb2673ebdf8.tar.bz2
Merge H5Fopen VOL auto-detect feature and latest VOL fixes to 1.12 (#395)
* Enable H5Fopen to probe list of available VOL connectors when opening a file * Unwrap file VOL object when destroying file (#308) * Check for wrap context before unwrapping file VOL object in H5F__dest (#325)
Diffstat (limited to 'src/H5VLint.c')
-rw-r--r--src/H5VLint.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/H5VLint.c b/src/H5VLint.c
index a0596fd..774d160 100644
--- a/src/H5VLint.c
+++ b/src/H5VLint.c
@@ -1219,6 +1219,27 @@ H5VL__register_connector_by_class(const H5VL_class_t *cls, hbool_t app_ref, hid_
FUNC_ENTER_PACKAGE
+ /* Check arguments */
+ if (!cls)
+ HGOTO_ERROR(H5E_ARGS, H5E_UNINITIALIZED, H5I_INVALID_HID,
+ "VOL connector class pointer cannot be NULL")
+ if (H5VL_VERSION != cls->version)
+ HGOTO_ERROR(H5E_VOL, H5E_CANTREGISTER, H5I_INVALID_HID, "VOL connector has incompatible version")
+ if (!cls->name)
+ HGOTO_ERROR(H5E_VOL, H5E_CANTREGISTER, H5I_INVALID_HID,
+ "VOL connector class name cannot be the NULL pointer")
+ if (0 == HDstrlen(cls->name))
+ HGOTO_ERROR(H5E_VOL, H5E_CANTREGISTER, H5I_INVALID_HID,
+ "VOL connector class name cannot be the empty string")
+ if (cls->info_cls.copy && !cls->info_cls.free)
+ HGOTO_ERROR(
+ H5E_VOL, H5E_CANTREGISTER, H5I_INVALID_HID,
+ "VOL connector must provide free callback for VOL info objects when a copy callback is provided")
+ if (cls->wrap_cls.get_wrap_ctx && !cls->wrap_cls.free_wrap_ctx)
+ HGOTO_ERROR(H5E_VOL, H5E_CANTREGISTER, H5I_INVALID_HID,
+ "VOL connector must provide free callback for object wrapping contexts when a get "
+ "callback is provided")
+
/* Set up op data for iteration */
op_data.kind = H5VL_GET_CONNECTOR_BY_NAME;
op_data.u.name = cls->name;