From 6038a0eddc2058959ed48f00fe9db9d4ee9d49e6 Mon Sep 17 00:00:00 2001 From: Arnaud Giersch Date: Thu, 16 Nov 2017 09:34:05 +0100 Subject: [PATCH] Move check for MPI_BOTTOM one level up. It seems more logical, and I hope that it will silence scan-build about null pointer dereference. --- src/smpi/bindings/smpi_pmpi_type.cpp | 2 +- src/smpi/mpi/smpi_datatype.cpp | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/smpi/bindings/smpi_pmpi_type.cpp b/src/smpi/bindings/smpi_pmpi_type.cpp index ec5cc1baa7..69b7eaa86b 100644 --- a/src/smpi/bindings/smpi_pmpi_type.cpp +++ b/src/smpi/bindings/smpi_pmpi_type.cpp @@ -338,7 +338,7 @@ int PMPI_Pack(void* inbuf, int incount, MPI_Datatype type, void* outbuf, int out return MPI_ERR_TYPE; if(comm==MPI_COMM_NULL) return MPI_ERR_COMM; - return type->pack(inbuf, incount, outbuf,outcount,position, comm); + return type->pack(inbuf == MPI_BOTTOM ? nullptr : inbuf, incount, outbuf, outcount, position, comm); } int PMPI_Pack_size(int incount, MPI_Datatype datatype, MPI_Comm comm, int* size) { diff --git a/src/smpi/mpi/smpi_datatype.cpp b/src/smpi/mpi/smpi_datatype.cpp index 2457c8ffdd..4237217359 100644 --- a/src/smpi/mpi/smpi_datatype.cpp +++ b/src/smpi/mpi/smpi_datatype.cpp @@ -251,8 +251,7 @@ void Datatype::set_name(char* name){ int Datatype::pack(void* inbuf, int incount, void* outbuf, int outcount, int* position,MPI_Comm comm){ if (outcount - *position < incount*static_cast(size_)) return MPI_ERR_BUFFER; - Datatype::copy(inbuf == MPI_BOTTOM ? nullptr : inbuf, incount, this, static_cast(outbuf) + *position, outcount, - MPI_CHAR); + Datatype::copy(inbuf, incount, this, static_cast(outbuf) + *position, outcount, MPI_CHAR); *position += incount * size_; return MPI_SUCCESS; } -- 2.20.1