From de8f32e9f942f5c0f0f4ac5197344605576556de Mon Sep 17 00:00:00 2001 From: Dennis Klein Date: Thu, 8 Mar 2018 15:24:47 +0100 Subject: [PATCH] FairMQ: Fix ofi::Message allocation --- fairmq/ofi/Message.cxx | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/fairmq/ofi/Message.cxx b/fairmq/ofi/Message.cxx index 1fff9b6b..5ff894f8 100644 --- a/fairmq/ofi/Message.cxx +++ b/fairmq/ofi/Message.cxx @@ -38,6 +38,10 @@ Message::Message(const size_t size) , fFreeFunction(nullptr) , fHint(nullptr) { + if (size) { + fData = malloc(size); + assert(fData); + } } Message::Message(void* data, const size_t size, fairmq_free_fn* ffn, void* hint) @@ -72,12 +76,15 @@ auto Message::Rebuild(const size_t size) -> void { if (fFreeFunction) { fFreeFunction(fData, fHint); - fData = nullptr; - fData = malloc(size); } else { - fData = realloc(fData, size); + free(fData); + } + if (size) { + fData = malloc(size); + assert(fData); + } else { + fData = nullptr; } - assert(fData); fInitialSize = size; fSize = size; fFreeFunction = nullptr; @@ -88,10 +95,14 @@ auto Message::Rebuild(void* data, const size_t size, fairmq_free_fn* ffn, void* { if (fFreeFunction) { fFreeFunction(fData, fHint); - fData = nullptr; - fData = malloc(size); } else { - fData = realloc(fData, size); + free(fData); + } + if (size) { + fData = malloc(size); + assert(fData); + } else { + fData = nullptr; } assert(fData); fInitialSize = size;