diff options
Diffstat (limited to 'fortran/src/H5Ef.c')
-rw-r--r-- | fortran/src/H5Ef.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/fortran/src/H5Ef.c b/fortran/src/H5Ef.c index 3921ebf..6bd6d74 100644 --- a/fortran/src/H5Ef.c +++ b/fortran/src/H5Ef.c @@ -118,18 +118,22 @@ nh5eprint_c2() * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5eget_major_c(int_f* error_no, _fcd name) +nh5eget_major_c(int_f* error_no, _fcd name, size_t_f* namelen) { int ret_val = -1; - char c_name[H5E_LEN]; + char *c_name; + size_t c_namelen; hid_t c_error_no; c_error_no = (hid_t)*error_no; + c_namelen = (size_t)*namelen; + if(c_namelen) c_name = (char*) HDmalloc(c_namelen + 1); + /* * Call H5Eget_major function. */ - H5Eget_msg(c_error_no, NULL, c_name, H5E_LEN); - HD5packFstring((char*)c_name, _fcdtocp(name), strlen(c_name)); + H5Eget_msg(c_error_no, NULL, c_name, c_namelen); + HD5packFstring((char*)c_name, _fcdtocp(name), c_namelen); if(!strcmp(c_name, "Invalid major error number")) return ret_val; ret_val = 0; @@ -148,18 +152,22 @@ nh5eget_major_c(int_f* error_no, _fcd name) * Modifications: *---------------------------------------------------------------------------*/ int_f -nh5eget_minor_c(int_f* error_no, _fcd name) +nh5eget_minor_c(int_f* error_no, _fcd name, size_t_f* namelen) { int ret_val = -1; - char c_name[H5E_LEN]; + char *c_name; + size_t c_namelen; hid_t c_error_no; c_error_no = (hid_t)*error_no; + c_namelen = (size_t)*namelen; + if(c_namelen) c_name = (char*) HDmalloc(c_namelen + 1); + /* * Call H5Eget_minor function. */ - H5Eget_msg(c_error_no, NULL, c_name, H5E_LEN); - HD5packFstring((char*)c_name, _fcdtocp(name), strlen(c_name)); + H5Eget_msg(c_error_no, NULL, c_name, c_namelen); + HD5packFstring((char*)c_name, _fcdtocp(name), c_namelen); if(!strcmp(c_name, "Invalid minor error number")) return ret_val; ret_val = 0; |