- return xbt_malloc(size);
-
- // check if the process is registered
- aid_t id = simgrid::s4u::this_actor::get_pid();
- if (not (buffer_map.find(id) == buffer_map.end()))
- {
- // This tuple represents a buffer and his size
- buffer_tuple buffer_tuple(nullptr, 0);
- buffer_map[id] = buffer_tuple;
- }
- if (std::get<1>(buffer_map[id]) < size){
- std::get<0>(buffer_map[id]) = static_cast<char*>(xbt_realloc(std::get<0>(buffer_map[id]), size));
- std::get<1>(buffer_map[id]) = size;
- }
- return std::get<0>(buffer_map[id]);
+ return new unsigned char[size];
+ // FIXME: a resize() may invalidate a previous pointer. Maybe we need to handle a queue of buffers with a reference
+ // counter. The same holds for smpi_get_tmp_recvbuffer.
+ if (sendbuffer.size() < size)
+ sendbuffer.resize(size);
+ return sendbuffer.data();