mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-01-12 15:04:59 +08:00
[svn-r18640] Description:
Added a null character to terminate a fixed-length string returned by H5Aread. Platforms tested: Linux/32 2.6 (jam) FreeBSD/64 6.3 (liberty)
This commit is contained in:
parent
97f4486769
commit
a0911ce3de
@ -423,18 +423,15 @@ void Attribute::p_read_fixed_len(const DataType& mem_type, H5std_string& strg) c
|
||||
// If there is data, allocate buffer and read it.
|
||||
if (attr_size > 0)
|
||||
{
|
||||
char *strg_C = NULL;
|
||||
|
||||
strg_C = new char [(size_t)attr_size+1];
|
||||
char *strg_C = new char[(size_t)attr_size+1];
|
||||
herr_t ret_value = H5Aread(id, mem_type.getId(), strg_C);
|
||||
|
||||
if( ret_value < 0 )
|
||||
{
|
||||
delete []strg_C; // de-allocate for fixed-len string
|
||||
throw AttributeIException("Attribute::read", "H5Aread failed");
|
||||
}
|
||||
|
||||
// Get string from the C char* and release resource allocated locally
|
||||
strg_C[attr_size] = '\0';
|
||||
strg = strg_C;
|
||||
delete []strg_C;
|
||||
}
|
||||
|
@ -216,11 +216,20 @@ static void test_reference_obj(void)
|
||||
H5std_string read_comment1 = group.getComment(".", 10);
|
||||
verify_val(read_comment1, write_comment, "Group::getComment", __LINE__, __FILE__);
|
||||
|
||||
// Test that getComment handles failures gracefully
|
||||
try {
|
||||
H5std_string read_comment_tmp = group.getComment(NULL);
|
||||
}
|
||||
catch (Exception E) {} // We expect this to fail
|
||||
// Test that getComment handles failures gracefully
|
||||
try {
|
||||
H5std_string read_comment_tmp = group.getComment(NULL);
|
||||
}
|
||||
catch (Exception E) {} // We expect this to fail
|
||||
|
||||
// Test reading the name of an item in the group
|
||||
H5std_string name;
|
||||
name = group.getObjnameByIdx(0);
|
||||
verify_val(name, "Dataset1", "Group::getObjnameByIdx", __LINE__, __FILE__);
|
||||
name.clear();
|
||||
ssize_t name_size = group.getObjnameByIdx(0, name, 5);
|
||||
verify_val(name, "Data", "Group::getObjnameByIdx(index,buf,buf_len)", __LINE__, __FILE__);
|
||||
verify_val(name_size, 8, "Group::getObjnameByIdx(index,buf,buf_len)", __LINE__, __FILE__);
|
||||
|
||||
// Close group
|
||||
group.close();
|
||||
|
Loading…
Reference in New Issue
Block a user