mecherror_copy(struct mecherror *dest, struct mecherror src)
{
*dest = src;
- dest->mech.elements = malloc(src.mech.length);
- if (dest->mech.elements == NULL) {
- if (src.mech.length)
+ if (src.mech.length > 0) {
+ dest->mech.elements = malloc(src.mech.length);
+ if (dest->mech.elements == NULL)
return ENOMEM;
- else
- return 0;
+ memcpy(dest->mech.elements, src.mech.elements, src.mech.length);
+ } else {
+ dest->mech.elements = NULL;
}
- memcpy(dest->mech.elements, src.mech.elements, src.mech.length);
return 0;
}
element storage when destroying the collection. */
static int free_one(OM_uint32 i, struct mecherror value, void *p)
{
- if (value.mech.length && value.mech.elements)
- free(value.mech.elements);
+ free(value.mech.elements);
return 0;
}
}
err = mecherrmap_add(&m, new_status, me_copy);
k5_mutex_unlock(&mutex);
- if (err) {
- if (me_copy.mech.length)
- free(me_copy.mech.elements);
- }
+ if (err)
+ free(me_copy.mech.elements);
#ifdef DEBUG
fprintf(f, "%s: mapping ", __FUNCTION__);
mecherror_print(me, f);