summaryrefslogtreecommitdiffstats
path: root/src/H5P.c
diff options
context:
space:
mode:
authorNeil Fortner <nfortne2@hdfgroup.org>2009-09-25 19:04:01 (GMT)
committerNeil Fortner <nfortne2@hdfgroup.org>2009-09-25 19:04:01 (GMT)
commit5f6759aa33e0bd115bf20d7f4ff9fca0019c35a3 (patch)
tree6324bbfc693de4028ff3a031222954718d325d68 /src/H5P.c
parent8cb32e3be8b5962dc15b05461caf33d4cb8a2479 (diff)
downloadhdf5-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.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/H5P.c b/src/H5P.c
index 19dd650..6e16286 100644
--- a/src/H5P.c
+++ b/src/H5P.c
@@ -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 */