1
1

Fix a corner case for a non-contiguous send convertor where the

convertor accepted to be set to a position in the middle of a
predefined datatype. Once set there is was unable to provide the
second part of the datatype. This fix force the convertor to be
aligned on predefined datatypes boundaries for any non-contiguous
send convertor.

This commit was SVN r29285.
Этот коммит содержится в:
George Bosilca 2013-09-28 16:46:21 +00:00
родитель 4313bbbe20
Коммит 43b4d76913

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

@ -428,6 +428,17 @@ int32_t opal_convertor_set_position_nocheck( opal_convertor_t* convertor,
opal_datatype_local_sizes );
} else {
rc = opal_convertor_generic_simple_position( convertor, position );
/**
* If we have a non-contigous send convertor don't allow it move in the middle
* of a predefined datatype, it won't be able to copy out the left-overs
* anyway. Instead force the position to stay on predefined datatypes
* boundaries. As we allow partial predefined datatypes on the contiguous
* case, we should be accepted by any receiver convertor.
*/
if( CONVERTOR_SEND & convertor->flags ) {
convertor->bConverted -= convertor->partial_length;
convertor->partial_length = 0;
}
}
*position = convertor->bConverted;
return rc;