• Jon Dyte's avatar
    Experimental function zmq_recviov doesnt work correctly in a couple of cases · 56ead844
    Jon Dyte authored
    1) VSM - you cannot hand out the 'data' address as it was not allocated on the heap
    2) for other messages the 'data' address cannot be handed out either, as it not the address
    originally returned by malloc and hence cannot be passed to 'free'.
    see msg.cpp
    u.lmsg.content = (content_t*) malloc (sizeof (content_t) + size_);
    ....
    u.lmsg.content->data = u.lmsg.content + 1;
    
    So the function is changed to always malloc a data buffer and copy the data into it.
    There is a possible optimisation using memmove for the non-VSM case but that is not done yet.
    56ead844
test_iov.cpp 2.49 KB