diff options
author | Neil Fortner <nfortne2@hdfgroup.org> | 2009-09-25 19:04:01 (GMT) |
---|---|---|
committer | Neil Fortner <nfortne2@hdfgroup.org> | 2009-09-25 19:04:01 (GMT) |
commit | 5f6759aa33e0bd115bf20d7f4ff9fca0019c35a3 (patch) | |
tree | 6324bbfc693de4028ff3a031222954718d325d68 /src/H5P.c | |
parent | 8cb32e3be8b5962dc15b05461caf33d4cb8a2479 (diff) | |
download | hdf5-5f6759aa33e0bd115bf20d7f4ff9fca0019c35a3.zip hdf5-5f6759aa33e0bd115bf20d7f4ff9fca0019c35a3.tar.gz hdf5-5f6759aa33e0bd115bf20d7f4ff9fca0019c35a3.tar.bz2 |
[svn-r17532] Purpose: Fix bug 1555
Description:
At several places in H5Pint.c properties were being compared using memcmp, not
using the registered "cmp" callback. This could cause memory checkers to
report uninitialized memory errors, and could conceivably cause runtime errors
if memcmp reported false equality (for example if a value pointed to by the
property changed).
The code has been changed to always use the cmp callback. No tests have been
added as the cmp callback is not exposed in the 1.6 API.
Tested: jam, linew, smirom (h5committest)
Diffstat (limited to 'src/H5P.c')
-rw-r--r-- | src/H5P.c | 8 |
1 files changed, 4 insertions, 4 deletions
@@ -134,7 +134,7 @@ H5P_do_prop_cb1(H5SL_t *slist, H5P_genprop_t *prop, H5P_prp_cb1_t cb) HGOTO_ERROR (H5E_PLIST, H5E_CANTINIT, FAIL,"Property callback failed"); /* Check if the property value changed */ - if(HDmemcmp(tmp_value,prop->value,prop->size)) { + if((prop->cmp)(tmp_value,prop->value,prop->size)) { /* Make a copy of the class's property */ if((pcopy=H5P_dup_prop(prop,H5P_PROP_WITHIN_LIST))==NULL) HGOTO_ERROR (H5E_PLIST, H5E_CANTCOPY, FAIL,"Can't copy property"); @@ -2616,7 +2616,7 @@ H5P_set(H5P_genplist_t *plist, const char *name, const void *value) HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't set property value"); } /* end if */ - if(HDmemcmp(tmp_value,prop->value,prop->size)) { + if((prop->cmp)(tmp_value,prop->value,prop->size)) { /* Make a copy of the class's property */ if((pcopy=H5P_dup_prop(prop,H5P_PROP_WITHIN_LIST))==NULL) HGOTO_ERROR(H5E_PLIST,H5E_CANTCOPY,FAIL,"Can't copy property"); @@ -2634,7 +2634,7 @@ H5P_set(H5P_genplist_t *plist, const char *name, const void *value) } /* end if */ /* No 'set' callback, just copy value */ else { - if(HDmemcmp(value,prop->value,prop->size)) { + if((prop->cmp)(value,prop->value,prop->size)) { /* Make a copy of the class's property */ if((pcopy=H5P_dup_prop(prop,H5P_PROP_WITHIN_LIST))==NULL) HGOTO_ERROR(H5E_PLIST,H5E_CANTCOPY,FAIL,"Can't copy property"); @@ -4442,7 +4442,7 @@ H5P_get(H5P_genplist_t *plist, const char *name, void *value) HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "can't set property value"); } /* end if */ - if(HDmemcmp(tmp_value,prop->value,prop->size)) { + if((prop->cmp)(tmp_value,prop->value,prop->size)) { H5P_genprop_t *pcopy; /* Copy of property to insert into skip list */ /* Make a copy of the class's property */ |