diff options
author | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2006-02-28 16:25:14 (GMT) |
---|---|---|
committer | Pedro Vicente Nunes <pvn@hdfgroup.org> | 2006-02-28 16:25:14 (GMT) |
commit | 6c5ed9f8b88a4f7f7b8e8b5e691de25a242a6781 (patch) | |
tree | 950021e9a514467bc1dd752a85474e8cc33a306f /hl | |
parent | 658bf4a8fb16cd3334b3fbfa2628226ffc20931f (diff) | |
download | hdf5-6c5ed9f8b88a4f7f7b8e8b5e691de25a242a6781.zip hdf5-6c5ed9f8b88a4f7f7b8e8b5e691de25a242a6781.tar.gz hdf5-6c5ed9f8b88a4f7f7b8e8b5e691de25a242a6781.tar.bz2 |
[svn-r11970] Purpose:
new feature
Description
H5LTget_dataset_info did not allow for passing NULL in the arguments when that argument was not requested.:
Solution:
add conditions that allow to pass NULL in the return arguments, when one of them is not needed
Platforms tested:
linux
Misc. update:
Diffstat (limited to 'hl')
-rw-r--r-- | hl/src/H5LT.c | 102 |
1 files changed, 54 insertions, 48 deletions
diff --git a/hl/src/H5LT.c b/hl/src/H5LT.c index bee7612..4598dc5 100644 --- a/hl/src/H5LT.c +++ b/hl/src/H5LT.c @@ -507,9 +507,9 @@ herr_t H5LTmake_dataset_string(hid_t loc_id, { hid_t did=-1; - hid_t sid=-1; - hid_t tid; - size_t size; + hid_t sid=-1; + hid_t tid; + size_t size; /* create a string data type */ if ( (tid = H5Tcopy( H5T_C_S1 )) < 0 ) @@ -544,7 +544,7 @@ herr_t H5LTmake_dataset_string(hid_t loc_id, return -1; if ( H5Sclose(sid) < 0 ) return -1; - if ( H5Tclose(tid) < 0 ) + if ( H5Tclose(tid) < 0 ) goto out; return 0; @@ -860,13 +860,13 @@ herr_t H5LTread_dataset_string( hid_t loc_id, char *buf ) { hid_t did; - hid_t tid; + hid_t tid; /* Open the dataset. */ if ( (did = H5Dopen( loc_id, dset_name )) < 0 ) return -1; - if ( (tid = H5Dget_type(did)) < 0 ) + if ( (tid = H5Dget_type(did)) < 0 ) goto out; /* Read */ @@ -876,14 +876,14 @@ herr_t H5LTread_dataset_string( hid_t loc_id, /* close */ if ( H5Dclose(did) ) goto out; - if ( H5Tclose(tid) ) + if ( H5Tclose(tid) ) return -1; return 0; out: H5Dclose( did ); - H5Tclose( tid ); + H5Tclose( tid ); return -1; } @@ -950,6 +950,7 @@ out: * Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu * * Date: September 4, 2001 + * Modified: February 28, 2006: checked for NULL parameters * *------------------------------------------------------------------------- */ @@ -964,36 +965,41 @@ herr_t H5LTget_dataset_info( hid_t loc_id, hid_t tid; hid_t sid; - /* Open the dataset. */ + /* open the dataset. */ if ( (did = H5Dopen( loc_id, dset_name )) < 0 ) return -1; - /* Get an identifier for the datatype. */ + /* get an identifier for the datatype. */ tid = H5Dget_type( did ); - /* Get the class. */ - *type_class = H5Tget_class( tid ); - - /* Get the size. */ - *type_size = H5Tget_size( tid ); - - /* Get the dataspace handle */ - if ( (sid = H5Dget_space( did )) < 0 ) - goto out; + /* get the class. */ + if (type_class!=NULL) + *type_class = H5Tget_class( tid ); - /* Get dimensions */ - if ( H5Sget_simple_extent_dims( sid, dims, NULL) < 0 ) - goto out; + /* get the size. */ + if (type_size!=NULL) + *type_size = H5Tget_size( tid ); - /* Terminate access to the dataspace */ - if ( H5Sclose( sid ) < 0 ) - goto out; + if (dims!=NULL) + { + /* get the dataspace handle */ + if ( (sid = H5Dget_space( did )) < 0 ) + goto out; + + /* get dimensions */ + if ( H5Sget_simple_extent_dims( sid, dims, NULL) < 0 ) + goto out; + + /* terminate access to the dataspace */ + if ( H5Sclose( sid ) < 0 ) + goto out; + } - /* Release the datatype. */ + /* release the datatype. */ if ( H5Tclose( tid ) ) return -1; - /* End access to the dataset */ + /* end access to the dataset */ if ( H5Dclose( did ) ) return -1; @@ -1121,7 +1127,7 @@ herr_t H5LTset_attribute_string( hid_t loc_id, hid_t obj_id; int has_attr; H5G_stat_t statbuf; - size_t attr_size; + size_t attr_size; /* Get the type of object */ @@ -2114,9 +2120,9 @@ print_enum(hid_t type, char* str, int indt) value = (unsigned char*)calloc((size_t)nmembs, MAX(dst_size, super_size)); for (i = 0; i < nmembs; i++) { - if((name[i] = H5Tget_member_name(type, i))==NULL) + if((name[i] = H5Tget_member_name(type, i))==NULL) goto out; - if(H5Tget_member_value(type, i, value + i * super_size)<0) + if(H5Tget_member_value(type, i, value + i * super_size)<0) goto out; } @@ -2133,39 +2139,39 @@ print_enum(hid_t type, char* str, int indt) /* Print members */ for (i = 0; i < nmembs; i++) { - indentation(indt + COL, str); - nchars = sprintf(tmp_str, "\"%s\"", name[i]); + indentation(indt + COL, str); + nchars = sprintf(tmp_str, "\"%s\"", name[i]); strcat(str, tmp_str); - sprintf(tmp_str, "%*s ", MAX(0, 16 - nchars), ""); + sprintf(tmp_str, "%*s ", MAX(0, 16 - nchars), ""); strcat(str, tmp_str); - if (H5T_SGN_NONE == H5Tget_sign(native)) { - /*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size" - *strangely, unless use another pointer "copy".*/ - copy = value+i*dst_size; - sprintf(tmp_str,"%u", *((unsigned int*)((void *)copy))); + if (H5T_SGN_NONE == H5Tget_sign(native)) { + /*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size" + *strangely, unless use another pointer "copy".*/ + copy = value+i*dst_size; + sprintf(tmp_str,"%u", *((unsigned int*)((void *)copy))); strcat(str, tmp_str); - } else { - /*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size" - *strangely, unless use another pointer "copy".*/ - copy = value+i*dst_size; - sprintf(tmp_str,"%d", *((int*)((void *)copy))); + } else { + /*On SGI Altix(cobalt), wrong values were printed out with "value+i*dst_size" + *strangely, unless use another pointer "copy".*/ + copy = value+i*dst_size; + sprintf(tmp_str,"%d", *((int*)((void *)copy))); strcat(str, tmp_str); - } + } - strcat(str, ";\n"); + strcat(str, ";\n"); } /* Release resources */ for (i = 0; i < nmembs; i++) - free(name[i]); + free(name[i]); free(name); free(value); H5Tclose(super); if (0 == nmembs) { - sprintf(tmp_str, "\n%*s <empty>", indt + 4, ""); + sprintf(tmp_str, "\n%*s <empty>", indt + 4, ""); strcat(str, tmp_str); } @@ -3534,7 +3540,7 @@ herr_t H5LT_set_attribute_string(hid_t dset_id, hid_t sid; hid_t aid; int has_attr; - size_t size; + size_t size; /* verify if the attribute already exists */ has_attr = H5LT_find_attribute(dset_id,name); |