@@ -232,7 +232,11 @@ mca_part_persist_progress(void)
232232
233233 err = opal_datatype_type_size (& (req -> req_datatype -> super ), & dt_size_ );
234234 if (OMPI_SUCCESS != err ) goto end_part_progress ;
235- dt_size = (dt_size_ > (size_t ) UINT_MAX ) ? MPI_UNDEFINED : (uint32_t ) dt_size_ ;
235+ if (dt_size_ > (size_t ) UINT_MAX ) {
236+ err = OMPI_ERR_UNKNOWN_DATA_TYPE ;
237+ goto end_part_progress ;
238+ }
239+ dt_size = (uint32_t ) dt_size_ ;
236240 uint32_t bytes = req -> real_count * dt_size ;
237241
238242 /* Set up persistent sends */
@@ -253,7 +257,11 @@ mca_part_persist_progress(void)
253257
254258 err = opal_datatype_type_size (& (req -> req_datatype -> super ), & dt_size_ );
255259 if (OMPI_SUCCESS != err ) goto end_part_progress ;
256- dt_size = (dt_size_ > (size_t ) UINT_MAX ) ? MPI_UNDEFINED : (uint32_t ) dt_size_ ;
260+ if (dt_size_ > (size_t ) UINT_MAX ) {
261+ err = OMPI_ERR_UNKNOWN_DATA_TYPE ;
262+ goto end_part_progress ;
263+ }
264+ dt_size = (uint32_t ) dt_size_ ;
257265 uint32_t bytes = req -> real_count * dt_size ;
258266
259267 /* Set up persistent receives */
@@ -355,8 +363,7 @@ mca_part_persist_precv_init(void *buf,
355363 struct ompi_request_t * * request )
356364{
357365 int err = OMPI_SUCCESS ;
358- size_t dt_size_ ;
359- uint32_t dt_size ;
366+ size_t dt_size ;
360367 mca_part_persist_list_t * new_progress_elem = NULL ;
361368
362369 mca_part_persist_precv_request_t * recvreq ;
@@ -387,10 +394,10 @@ mca_part_persist_precv_init(void *buf,
387394 if (OMPI_SUCCESS != err ) return OMPI_ERROR ;
388395
389396 /* Compute total number of bytes */
390- err = opal_datatype_type_size (& (req -> req_datatype -> super ), & dt_size_ );
397+ err = opal_datatype_type_size (& (req -> req_datatype -> super ), & dt_size );
391398 if (OMPI_SUCCESS != err ) return OMPI_ERROR ;
392- dt_size = ( dt_size_ > (size_t ) UINT_MAX ) ? MPI_UNDEFINED : ( uint32_t ) dt_size_ ;
393- req -> req_bytes = parts * count * dt_size ;
399+ if ( dt_size > (size_t ) UINT_MAX ) return OMPI_ERR_UNKNOWN_DATA_TYPE ;
400+ req -> req_bytes = parts * count * (( uint32_t ) dt_size ) ;
394401
395402 /* Set ompi request initial values */
396403 req -> req_ompi .req_persistent = true;
@@ -448,7 +455,8 @@ mca_part_persist_psend_init(const void* buf,
448455 /* Determine total bytes to send. */
449456 err = opal_datatype_type_size (& (req -> req_datatype -> super ), & dt_size_ );
450457 if (OMPI_SUCCESS != err ) return OMPI_ERROR ;
451- dt_size = (dt_size_ > (size_t ) UINT_MAX ) ? MPI_UNDEFINED : (uint32_t ) dt_size_ ;
458+ if (dt_size_ > (size_t ) UINT_MAX ) return OMPI_ERR_UNKNOWN_DATA_TYPE ;
459+ dt_size = (uint32_t ) dt_size_ ;
452460 req -> req_bytes = parts * count * dt_size ;
453461
454462 /* non-blocking send set-up data */
0 commit comments