diff options
-rw-r--r-- | src/H5T.c | 2 | ||||
-rw-r--r-- | test/dtypes.c | 3 |
2 files changed, 5 insertions, 0 deletions
@@ -4315,6 +4315,8 @@ H5Tinsert(hid_t parent_id, const char *name, size_t offset, hid_t member_id) H5TRACE4("e","iszi",parent_id,name,offset,member_id); /* Check args */ + if (parent_id==member_id) + HRETURN_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "can't insert compound datatype within itself"); if (H5I_DATATYPE != H5I_get_type(parent_id) || NULL == (parent = H5I_object(parent_id)) || H5T_COMPOUND != parent->type) { diff --git a/test/dtypes.c b/test/dtypes.c index 13df634..1dbd650 100644 --- a/test/dtypes.c +++ b/test/dtypes.c @@ -397,6 +397,9 @@ test_compound_1(void) /* Create the empty type */ if ((complex_id = H5Tcreate(H5T_COMPOUND, sizeof tmp))<0) goto error; + /* Attempt to add the new compound datatype as a field within itself */ + if (H5Tinsert(complex_id, "compound", 0, complex_id)>=0) goto error; + /* Add a couple fields */ if (H5Tinsert(complex_id, "real", HOFFSET(complex_t, re), H5T_NATIVE_DOUBLE)<0) goto error; |