FairMQ: Fix ofi::Message allocation

This commit is contained in:
Dennis Klein 2018-03-08 15:24:47 +01:00 committed by Mohammad Al-Turany
parent e8994dfa0f
commit de8f32e9f9

View File

@ -38,6 +38,10 @@ Message::Message(const size_t size)
, fFreeFunction(nullptr) , fFreeFunction(nullptr)
, fHint(nullptr) , fHint(nullptr)
{ {
if (size) {
fData = malloc(size);
assert(fData);
}
} }
Message::Message(void* data, const size_t size, fairmq_free_fn* ffn, void* hint) 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) { if (fFreeFunction) {
fFreeFunction(fData, fHint); fFreeFunction(fData, fHint);
fData = nullptr;
fData = malloc(size);
} else { } else {
fData = realloc(fData, size); free(fData);
}
if (size) {
fData = malloc(size);
assert(fData);
} else {
fData = nullptr;
} }
assert(fData);
fInitialSize = size; fInitialSize = size;
fSize = size; fSize = size;
fFreeFunction = nullptr; fFreeFunction = nullptr;
@ -88,10 +95,14 @@ auto Message::Rebuild(void* data, const size_t size, fairmq_free_fn* ffn, void*
{ {
if (fFreeFunction) { if (fFreeFunction) {
fFreeFunction(fData, fHint); fFreeFunction(fData, fHint);
fData = nullptr;
fData = malloc(size);
} else { } else {
fData = realloc(fData, size); free(fData);
}
if (size) {
fData = malloc(size);
assert(fData);
} else {
fData = nullptr;
} }
assert(fData); assert(fData);
fInitialSize = size; fInitialSize = size;