xbt_dict_foreach((*type)->attributes, cursor, key, value){
smpi_type_key_elem elem = xbt_dict_get_or_null(smpi_type_keyvals, (const char*)key);
if(elem && elem->delete_fn)
- elem->delete_fn(*type, atoi((const char*)key), &value, &flag);
+ elem->delete_fn(*type, atoi((const char*)key), value, &flag);
}
}
void * value;
int flag;
if(smpi_type_attr_get(type, keyval, &value, &flag)==MPI_SUCCESS){
- int ret = elem->delete_fn(type, keyval, &value, &flag);
+ int ret = elem->delete_fn(type, keyval, value, &flag);
if(ret!=MPI_SUCCESS) return ret;
}
}
return MPI_SUCCESS;
}
TRY {
- char* tmpkey=xbt_malloc(INTSIZEDCHAR);
- sprintf(tmpkey, "%d", keyval);
*(void**)attr_value = xbt_dict_get(type->attributes, (const char*)tmpkey);
*flag=1;
}
void* value;
smpi_type_attr_get(type, keyval, &value, &flag);
if(flag && elem->delete_fn!=MPI_NULL_DELETE_FN){
- int ret = elem->delete_fn(type, keyval, &value, &flag);
+ int ret = elem->delete_fn(type, keyval, value, &flag);
if(ret!=MPI_SUCCESS) return ret;
}
if(type->attributes==NULL)
}
int smpi_type_keyval_free(int* keyval){
- smpi_type_key_elem elem = xbt_dict_get_or_null(smpi_type_keyvals, (const char*)keyval);
- if(!elem)
- return MPI_ERR_ARG;
char* tmpkey=xbt_malloc(INTSIZEDCHAR);
sprintf(tmpkey, "%d", *keyval);
+ smpi_type_key_elem elem = xbt_dict_get_or_null(smpi_type_keyvals, (const char*)tmpkey);
+ if(!elem){
+ xbt_free(tmpkey);
+ return MPI_ERR_ARG;
+ }
xbt_dict_remove(smpi_type_keyvals, (const char*)tmpkey);
xbt_free(elem);
xbt_free(tmpkey);