1
1

Small optimization or zero length messages.

This commit was SVN r12414.
Этот коммит содержится в:
George Bosilca 2006-11-02 19:10:28 +00:00
родитель 9534bb27d9
Коммит 110d07b7d3

Просмотреть файл

@ -35,9 +35,15 @@ ompi_mtl_datatype_pack(struct ompi_convertor_t *convertor,
size_t max_data;
ompi_convertor_get_packed_size(convertor, &max_data);
if( 0 == max_data ) {
*freeAfter = false;
*buffer = NULL;
*buffer_len = 0;
return OMPI_SUCCESS;
}
iov.iov_len = max_data;
if (max_data > 0 && ompi_convertor_need_buffers(convertor)) {
if (ompi_convertor_need_buffers(convertor)) {
iov.iov_base = malloc(max_data);
if (NULL == iov.iov_base) return OMPI_ERR_OUT_OF_RESOURCE;
*freeAfter = true;
@ -67,7 +73,13 @@ ompi_mtl_datatype_recv_buf(struct ompi_convertor_t *convertor,
ompi_convertor_get_packed_size(convertor, &max_data);
if (max_data > 0 && ompi_convertor_need_buffers(convertor)) {
if( 0 == max_data ) {
*buffer = NULL;
*free_on_error = false;
*buffer_len = 0;
return OMPI_SUCCESS;
}
if (ompi_convertor_need_buffers(convertor)) {
*buffer = malloc(max_data);
*free_on_error = true;
} else {
@ -95,7 +107,6 @@ ompi_mtl_datatype_unpack(struct ompi_convertor_t *convertor,
iov.iov_base = buffer;
max_data = iov.iov_len;
if (max_data > 0 && ompi_convertor_need_buffers(convertor)) {
ompi_convertor_unpack(convertor, &iov, &iov_count, &max_data );