From 06e882f8ea7628e45970a8d64687944f33709044 Mon Sep 17 00:00:00 2001 From: Max Kozlovsky Date: Mon, 19 Oct 2015 13:29:26 -0700 Subject: [PATCH] honor buffer reference count in zmq::shared_message_memory_allocator::deallocate --- src/decoder_allocators.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/decoder_allocators.cpp b/src/decoder_allocators.cpp index 7480d402..8acaa91a 100644 --- a/src/decoder_allocators.cpp +++ b/src/decoder_allocators.cpp @@ -96,10 +96,11 @@ unsigned char* zmq::shared_message_memory_allocator::allocate () void zmq::shared_message_memory_allocator::deallocate () { - std::free (buf); - buf = NULL; - bufsize = 0; - msg_refcnt = NULL; + zmq::atomic_counter_t* c = reinterpret_cast(buf); + if (buf && !c->sub(1)) { + std::free(buf); + } + release(); } unsigned char* zmq::shared_message_memory_allocator::release ()