Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
L
libzmq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
libzmq
Commits
1621c25e
Commit
1621c25e
authored
Aug 16, 2015
by
reza.ebrahimi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
define a macro for heap object deletion in a unified manner (related to issue #1524)
parent
9bf88bcc
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
93 additions
and
108 deletions
+93
-108
zmq.h
include/zmq.h
+3
-0
address.cpp
src/address.cpp
+3
-6
ctx.cpp
src/ctx.cpp
+6
-4
epoll.cpp
src/epoll.cpp
+6
-5
io_thread.cpp
src/io_thread.cpp
+1
-1
kqueue.cpp
src/kqueue.cpp
+3
-3
msg.cpp
src/msg.cpp
+6
-5
mtrie.cpp
src/mtrie.cpp
+11
-17
pgm_receiver.cpp
src/pgm_receiver.cpp
+6
-8
pipe.cpp
src/pipe.cpp
+14
-24
reaper.cpp
src/reaper.cpp
+1
-1
session_base.cpp
src/session_base.cpp
+1
-1
socket_base.cpp
src/socket_base.cpp
+11
-10
socks_connecter.cpp
src/socks_connecter.cpp
+3
-4
stream_engine.cpp
src/stream_engine.cpp
+8
-6
tcp_connecter.cpp
src/tcp_connecter.cpp
+2
-4
trie.cpp
src/trie.cpp
+6
-7
zmq.cpp
src/zmq.cpp
+1
-1
zmq_utils.cpp
src/zmq_utils.cpp
+1
-1
No files found.
include/zmq.h
View file @
1621c25e
...
...
@@ -503,6 +503,9 @@ ZMQ_EXPORT void zmq_threadclose (void* thread);
/******************************************************************************/
#define ZMQ_UNUSED(object) (void)object
#define LIBZMQ_DELETE(p_object) \
delete p_object; \
p_object = 0;
#undef ZMQ_EXPORT
...
...
src/address.cpp
View file @
1621c25e
...
...
@@ -49,16 +49,14 @@ zmq::address_t::~address_t ()
{
if
(
protocol
==
"tcp"
)
{
if
(
resolved
.
tcp_addr
)
{
delete
resolved
.
tcp_addr
;
resolved
.
tcp_addr
=
0
;
LIBZMQ_DELETE
(
resolved
.
tcp_addr
);
}
}
#if !defined ZMQ_HAVE_WINDOWS && !defined ZMQ_HAVE_OPENVMS
else
if
(
protocol
==
"ipc"
)
{
if
(
resolved
.
ipc_addr
)
{
delete
resolved
.
ipc_addr
;
resolved
.
ipc_addr
=
0
;
LIBZMQ_DELETE
(
resolved
.
ipc_addr
);
}
}
#endif
...
...
@@ -66,8 +64,7 @@ zmq::address_t::~address_t ()
else
if
(
protocol
==
"tipc"
)
{
if
(
resolved
.
tipc_addr
)
{
delete
resolved
.
tipc_addr
;
resolved
.
tipc_addr
=
0
;
LIBZMQ_DELETE
(
resolved
.
tipc_addr
);
}
}
#endif
...
...
src/ctx.cpp
View file @
1621c25e
...
...
@@ -97,15 +97,17 @@ zmq::ctx_t::~ctx_t ()
// Ask I/O threads to terminate. If stop signal wasn't sent to I/O
// thread subsequent invocation of destructor would hang-up.
for
(
io_threads_t
::
size_type
i
=
0
;
i
!=
io_threads
.
size
();
i
++
)
for
(
io_threads_t
::
size_type
i
=
0
;
i
!=
io_threads
.
size
();
i
++
)
{
io_threads
[
i
]
->
stop
();
}
// Wait till I/O threads actually terminate.
for
(
io_threads_t
::
size_type
i
=
0
;
i
!=
io_threads
.
size
();
i
++
)
delete
io_threads
[
i
];
for
(
io_threads_t
::
size_type
i
=
0
;
i
!=
io_threads
.
size
();
i
++
)
{
LIBZMQ_DELETE
(
io_threads
[
i
]);
}
// Deallocate the reaper thread object.
delete
reaper
;
LIBZMQ_DELETE
(
reaper
)
;
// Deallocate the array of mailboxes. No special work is
// needed as mailboxes themselves were deallocated with their
...
...
src/epoll.cpp
View file @
1621c25e
...
...
@@ -56,8 +56,9 @@ zmq::epoll_t::~epoll_t ()
worker
.
stop
();
close
(
epoll_fd
);
for
(
retired_t
::
iterator
it
=
retired
.
begin
();
it
!=
retired
.
end
();
++
it
)
delete
*
it
;
for
(
retired_t
::
iterator
it
=
retired
.
begin
();
it
!=
retired
.
end
();
++
it
)
{
LIBZMQ_DELETE
(
*
it
);
}
}
zmq
::
epoll_t
::
handle_t
zmq
::
epoll_t
::
add_fd
(
fd_t
fd_
,
i_poll_events
*
events_
)
...
...
@@ -177,9 +178,9 @@ void zmq::epoll_t::loop ()
}
// Destroy retired event sources.
for
(
retired_t
::
iterator
it
=
retired
.
begin
();
it
!=
retired
.
end
();
++
it
)
delete
*
it
;
for
(
retired_t
::
iterator
it
=
retired
.
begin
();
it
!=
retired
.
end
();
++
it
)
{
LIBZMQ_DELETE
(
*
it
);
}
retired
.
clear
();
}
}
...
...
src/io_thread.cpp
View file @
1621c25e
...
...
@@ -46,7 +46,7 @@ zmq::io_thread_t::io_thread_t (ctx_t *ctx_, uint32_t tid_) :
zmq
::
io_thread_t
::~
io_thread_t
()
{
delete
poller
;
LIBZMQ_DELETE
(
poller
)
;
}
void
zmq
::
io_thread_t
::
start
()
...
...
src/kqueue.cpp
View file @
1621c25e
...
...
@@ -210,9 +210,9 @@ void zmq::kqueue_t::loop ()
}
// Destroy retired event sources.
for
(
retired_t
::
iterator
it
=
retired
.
begin
();
it
!=
retired
.
end
();
++
it
)
delete
*
it
;
for
(
retired_t
::
iterator
it
=
retired
.
begin
();
it
!=
retired
.
end
();
++
it
)
{
LIBZMQ_DELETE
(
*
it
);
}
retired
.
clear
();
}
}
...
...
src/msg.cpp
View file @
1621c25e
...
...
@@ -235,9 +235,11 @@ int zmq::msg_t::close ()
}
}
if
(
u
.
base
.
metadata
!=
NULL
)
if
(
u
.
base
.
metadata
->
drop_ref
())
delete
u
.
base
.
metadata
;
if
(
u
.
base
.
metadata
!=
NULL
)
{
if
(
u
.
base
.
metadata
->
drop_ref
())
{
LIBZMQ_DELETE
(
u
.
base
.
metadata
);
}
}
// Make the message invalid.
u
.
base
.
type
=
0
;
...
...
@@ -392,8 +394,7 @@ void zmq::msg_t::reset_metadata ()
{
if
(
u
.
base
.
metadata
)
{
if
(
u
.
base
.
metadata
->
drop_ref
())
delete
u
.
base
.
metadata
;
u
.
base
.
metadata
=
NULL
;
LIBZMQ_DELETE
(
u
.
base
.
metadata
);
}
}
...
...
src/mtrie.cpp
View file @
1621c25e
...
...
@@ -52,19 +52,17 @@ zmq::mtrie_t::mtrie_t () :
zmq
::
mtrie_t
::~
mtrie_t
()
{
if
(
pipes
)
{
delete
pipes
;
pipes
=
0
;
LIBZMQ_DELETE
(
pipes
);
}
if
(
count
==
1
)
{
zmq_assert
(
next
.
node
);
delete
next
.
node
;
next
.
node
=
0
;
LIBZMQ_DELETE
(
next
.
node
);
}
else
if
(
count
>
1
)
{
for
(
unsigned
short
i
=
0
;
i
!=
count
;
++
i
)
delete
next
.
table
[
i
];
else
if
(
count
>
1
)
{
for
(
unsigned
short
i
=
0
;
i
!=
count
;
++
i
)
{
LIBZMQ_DELETE
(
next
.
table
[
i
]);
}
free
(
next
.
table
);
}
}
...
...
@@ -178,8 +176,7 @@ void zmq::mtrie_t::rm_helper (pipe_t *pipe_, unsigned char **buff_,
}
if
(
pipes
->
empty
())
{
delete
pipes
;
pipes
=
0
;
LIBZMQ_DELETE
(
pipes
);
}
}
...
...
@@ -203,8 +200,7 @@ void zmq::mtrie_t::rm_helper (pipe_t *pipe_, unsigned char **buff_,
// Prune the node if it was made redundant by the removal
if
(
next
.
node
->
is_redundant
())
{
delete
next
.
node
;
next
.
node
=
0
;
LIBZMQ_DELETE
(
next
.
node
);
count
=
0
;
--
live_nodes
;
zmq_assert
(
live_nodes
==
0
);
...
...
@@ -226,8 +222,7 @@ void zmq::mtrie_t::rm_helper (pipe_t *pipe_, unsigned char **buff_,
// Prune redundant nodes from the mtrie
if
(
next
.
table
[
c
]
->
is_redundant
())
{
delete
next
.
table
[
c
];
next
.
table
[
c
]
=
0
;
LIBZMQ_DELETE
(
next
.
table
[
c
]);
zmq_assert
(
live_nodes
>
0
);
--
live_nodes
;
...
...
@@ -306,8 +301,7 @@ bool zmq::mtrie_t::rm_helper (unsigned char *prefix_, size_t size_,
pipes_t
::
size_type
erased
=
pipes
->
erase
(
pipe_
);
zmq_assert
(
erased
==
1
);
if
(
pipes
->
empty
())
{
delete
pipes
;
pipes
=
0
;
LIBZMQ_DELETE
(
pipes
);
}
}
return
!
pipes
;
...
...
@@ -326,7 +320,7 @@ bool zmq::mtrie_t::rm_helper (unsigned char *prefix_, size_t size_,
bool
ret
=
next_node
->
rm_helper
(
prefix_
+
1
,
size_
-
1
,
pipe_
);
if
(
next_node
->
is_redundant
())
{
delete
next_node
;
LIBZMQ_DELETE
(
next_node
)
;
zmq_assert
(
count
>
0
);
if
(
count
==
1
)
{
...
...
src/pgm_receiver.cpp
View file @
1621c25e
...
...
@@ -89,8 +89,9 @@ void zmq::pgm_receiver_t::unplug ()
{
// Delete decoders.
for
(
peers_t
::
iterator
it
=
peers
.
begin
();
it
!=
peers
.
end
();
++
it
)
{
if
(
it
->
second
.
decoder
!=
NULL
)
delete
it
->
second
.
decoder
;
if
(
it
->
second
.
decoder
!=
NULL
)
{
LIBZMQ_DELETE
(
it
->
second
.
decoder
);
}
}
peers
.
clear
();
active_tsi
=
NULL
;
...
...
@@ -141,8 +142,7 @@ void zmq::pgm_receiver_t::restart_input ()
// Data error. Delete message decoder, mark the
// peer as not joined and drop remaining data.
it
->
second
.
joined
=
false
;
delete
it
->
second
.
decoder
;
it
->
second
.
decoder
=
NULL
;
LIBZMQ_DELETE
(
it
->
second
.
decoder
);
insize
=
0
;
}
}
...
...
@@ -194,8 +194,7 @@ void zmq::pgm_receiver_t::in_event ()
if
(
it
!=
peers
.
end
())
{
it
->
second
.
joined
=
false
;
if
(
it
->
second
.
decoder
!=
NULL
)
{
delete
it
->
second
.
decoder
;
it
->
second
.
decoder
=
NULL
;
LIBZMQ_DELETE
(
it
->
second
.
decoder
);
}
}
break
;
...
...
@@ -252,8 +251,7 @@ void zmq::pgm_receiver_t::in_event ()
}
it
->
second
.
joined
=
false
;
delete
it
->
second
.
decoder
;
it
->
second
.
decoder
=
NULL
;
LIBZMQ_DELETE
(
it
->
second
.
decoder
);
insize
=
0
;
}
}
...
...
src/pipe.cpp
View file @
1621c25e
...
...
@@ -284,7 +284,7 @@ void zmq::pipe_t::process_hiccup (void *pipe_)
int
rc
=
msg
.
close
();
errno_assert
(
rc
==
0
);
}
delete
outpipe
;
LIBZMQ_DELETE
(
outpipe
)
;
// Plug in the new outpipe.
zmq_assert
(
pipe_
);
...
...
@@ -368,7 +368,7 @@ void zmq::pipe_t::process_pipe_term_ack ()
}
}
delete
inpipe
;
LIBZMQ_DELETE
(
inpipe
)
;
// Deallocate the pipe object
delete
this
;
...
...
@@ -385,49 +385,41 @@ void zmq::pipe_t::terminate (bool delay_)
delay
=
delay_
;
// If terminate was already called, we can ignore the duplicit invocation.
if
(
state
==
term_req_sent1
||
state
==
term_req_sent2
)
if
(
state
==
term_req_sent1
||
state
==
term_req_sent2
)
{
return
;
}
// If the pipe is in the final phase of async termination, it's going to
// closed anyway. No need to do anything special here.
else
if
(
state
==
term_ack_sent
)
else
if
(
state
==
term_ack_sent
)
{
return
;
}
// The simple sync termination case. Ask the peer to terminate and wait
// for the ack.
else
if
(
state
==
active
)
{
else
if
(
state
==
active
)
{
send_pipe_term
(
peer
);
state
=
term_req_sent1
;
}
// There are still pending messages available, but the user calls
// 'terminate'. We can act as if all the pending messages were read.
else
if
(
state
==
waiting_for_delimiter
&&
!
delay
)
{
else
if
(
state
==
waiting_for_delimiter
&&
!
delay
)
{
outpipe
=
NULL
;
send_pipe_term_ack
(
peer
);
state
=
term_ack_sent
;
}
// If there are pending messages still available, do nothing.
else
if
(
state
==
waiting_for_delimiter
)
{
else
if
(
state
==
waiting_for_delimiter
)
{
}
// We've already got delimiter, but not term command yet. We can ignore
// the delimiter and ack synchronously terminate as if we were in
// active state.
else
if
(
state
==
delimiter_received
)
{
else
if
(
state
==
delimiter_received
)
{
send_pipe_term
(
peer
);
state
=
term_req_sent1
;
}
// There are no other states.
else
else
{
zmq_assert
(
false
);
}
// Stop outbound flow of messages.
out_active
=
false
;
...
...
@@ -505,11 +497,9 @@ void zmq::pipe_t::hiccup ()
// Create new inpipe.
if
(
conflate
)
inpipe
=
new
(
std
::
nothrow
)
ypipe_conflate_t
<
msg_t
>
();
inpipe
=
new
(
std
::
nothrow
)
ypipe_conflate_t
<
msg_t
>
();
else
inpipe
=
new
(
std
::
nothrow
)
ypipe_t
<
msg_t
,
message_pipe_granularity
>
();
inpipe
=
new
(
std
::
nothrow
)
ypipe_t
<
msg_t
,
message_pipe_granularity
>
();
alloc_assert
(
inpipe
);
in_active
=
true
;
...
...
src/reaper.cpp
View file @
1621c25e
...
...
@@ -49,7 +49,7 @@ zmq::reaper_t::reaper_t (class ctx_t *ctx_, uint32_t tid_) :
zmq
::
reaper_t
::~
reaper_t
()
{
delete
poller
;
LIBZMQ_DELETE
(
poller
)
;
}
zmq
::
mailbox_t
*
zmq
::
reaper_t
::
get_mailbox
()
...
...
src/session_base.cpp
View file @
1621c25e
...
...
@@ -111,7 +111,7 @@ zmq::session_base_t::~session_base_t ()
if
(
engine
)
engine
->
terminate
();
delete
addr
;
LIBZMQ_DELETE
(
addr
)
;
}
void
zmq
::
session_base_t
::
attach_pipe
(
pipe_t
*
pipe_
)
...
...
src/socket_base.cpp
View file @
1621c25e
...
...
@@ -156,7 +156,7 @@ zmq::socket_base_t *zmq::socket_base_t::create (int type_, class ctx_t *parent_,
if
(
mailbox
!=
NULL
&&
mailbox
->
get_fd
()
==
retired_fd
)
{
s
->
destroyed
=
true
;
delete
s
;
LIBZMQ_DELETE
(
s
)
;
return
NULL
;
}
...
...
@@ -189,10 +189,11 @@ zmq::socket_base_t::socket_base_t (ctx_t *parent_, uint32_t tid_, int sid_, bool
zmq
::
socket_base_t
::~
socket_base_t
()
{
delete
mailbox
;
LIBZMQ_DELETE
(
mailbox
)
;
if
(
reaper_signaler
)
delete
reaper_signaler
;
if
(
reaper_signaler
)
{
LIBZMQ_DELETE
(
reaper_signaler
);
}
stop_monitor
();
zmq_assert
(
destroyed
);
...
...
@@ -535,7 +536,7 @@ int zmq::socket_base_t::bind (const char *addr_)
alloc_assert
(
listener
);
int
rc
=
listener
->
set_address
(
address
.
c_str
());
if
(
rc
!=
0
)
{
delete
listener
;
LIBZMQ_DELETE
(
listener
)
;
event_bind_failed
(
address
,
zmq_errno
());
EXIT_MUTEX
();
return
-
1
;
...
...
@@ -557,7 +558,7 @@ int zmq::socket_base_t::bind (const char *addr_)
alloc_assert
(
listener
);
int
rc
=
listener
->
set_address
(
address
.
c_str
());
if
(
rc
!=
0
)
{
delete
listener
;
LIBZMQ_DELETE
(
listener
)
;
event_bind_failed
(
address
,
zmq_errno
());
EXIT_MUTEX
();
return
-
1
;
...
...
@@ -579,7 +580,7 @@ int zmq::socket_base_t::bind (const char *addr_)
alloc_assert
(
listener
);
int
rc
=
listener
->
set_address
(
address
.
c_str
());
if
(
rc
!=
0
)
{
delete
listener
;
LIBZMQ_DELETE
(
listener
)
;
event_bind_failed
(
address
,
zmq_errno
());
EXIT_MUTEX
();
return
-
1
;
...
...
@@ -788,7 +789,7 @@ int zmq::socket_base_t::connect (const char *addr_)
}
if
(
rc
==
-
1
)
{
errno
=
EINVAL
;
delete
paddr
;
LIBZMQ_DELETE
(
paddr
)
;
EXIT_MUTEX
();
return
-
1
;
}
...
...
@@ -802,7 +803,7 @@ int zmq::socket_base_t::connect (const char *addr_)
alloc_assert
(
paddr
->
resolved
.
ipc_addr
);
int
rc
=
paddr
->
resolved
.
ipc_addr
->
resolve
(
address
.
c_str
());
if
(
rc
!=
0
)
{
delete
paddr
;
LIBZMQ_DELETE
(
paddr
)
;
EXIT_MUTEX
();
return
-
1
;
}
...
...
@@ -831,7 +832,7 @@ int zmq::socket_base_t::connect (const char *addr_)
alloc_assert
(
paddr
->
resolved
.
tipc_addr
);
int
rc
=
paddr
->
resolved
.
tipc_addr
->
resolve
(
address
.
c_str
());
if
(
rc
!=
0
)
{
delete
paddr
;
LIBZMQ_DELETE
(
paddr
)
;
EXIT_MUTEX
();
return
-
1
;
}
...
...
src/socks_connecter.cpp
View file @
1621c25e
...
...
@@ -72,7 +72,7 @@ zmq::socks_connecter_t::socks_connecter_t (class io_thread_t *io_thread_,
zmq
::
socks_connecter_t
::~
socks_connecter_t
()
{
zmq_assert
(
s
==
retired_fd
);
delete
proxy_addr
;
LIBZMQ_DELETE
(
proxy_addr
)
;
}
void
zmq
::
socks_connecter_t
::
process_plug
()
...
...
@@ -303,15 +303,14 @@ int zmq::socks_connecter_t::connect_to_proxy ()
zmq_assert
(
s
==
retired_fd
);
// Resolve the address
delete
proxy_addr
->
resolved
.
tcp_addr
;
LIBZMQ_DELETE
(
proxy_addr
->
resolved
.
tcp_addr
)
;
proxy_addr
->
resolved
.
tcp_addr
=
new
(
std
::
nothrow
)
tcp_address_t
();
alloc_assert
(
proxy_addr
->
resolved
.
tcp_addr
);
int
rc
=
proxy_addr
->
resolved
.
tcp_addr
->
resolve
(
proxy_addr
->
address
.
c_str
(),
false
,
options
.
ipv6
);
if
(
rc
!=
0
)
{
delete
proxy_addr
->
resolved
.
tcp_addr
;
proxy_addr
->
resolved
.
tcp_addr
=
NULL
;
LIBZMQ_DELETE
(
proxy_addr
->
resolved
.
tcp_addr
);
return
-
1
;
}
zmq_assert
(
proxy_addr
->
resolved
.
tcp_addr
!=
NULL
);
...
...
src/stream_engine.cpp
View file @
1621c25e
...
...
@@ -172,13 +172,15 @@ zmq::stream_engine_t::~stream_engine_t ()
// Drop reference to metadata and destroy it if we are
// the only user.
if
(
metadata
!=
NULL
)
if
(
metadata
->
drop_ref
())
delete
metadata
;
if
(
metadata
!=
NULL
)
{
if
(
metadata
->
drop_ref
())
{
LIBZMQ_DELETE
(
metadata
);
}
}
delete
encoder
;
delete
decoder
;
delete
mechanism
;
LIBZMQ_DELETE
(
encoder
)
;
LIBZMQ_DELETE
(
decoder
)
;
LIBZMQ_DELETE
(
mechanism
)
;
}
void
zmq
::
stream_engine_t
::
plug
(
io_thread_t
*
io_thread_
,
...
...
src/tcp_connecter.cpp
View file @
1621c25e
...
...
@@ -252,8 +252,7 @@ int zmq::tcp_connecter_t::open ()
// Resolve the address
if
(
addr
->
resolved
.
tcp_addr
!=
NULL
)
{
delete
addr
->
resolved
.
tcp_addr
;
addr
->
resolved
.
tcp_addr
=
NULL
;
LIBZMQ_DELETE
(
addr
->
resolved
.
tcp_addr
);
}
addr
->
resolved
.
tcp_addr
=
new
(
std
::
nothrow
)
tcp_address_t
();
...
...
@@ -261,8 +260,7 @@ int zmq::tcp_connecter_t::open ()
int
rc
=
addr
->
resolved
.
tcp_addr
->
resolve
(
addr
->
address
.
c_str
(),
false
,
options
.
ipv6
);
if
(
rc
!=
0
)
{
delete
addr
->
resolved
.
tcp_addr
;
addr
->
resolved
.
tcp_addr
=
NULL
;
LIBZMQ_DELETE
(
addr
->
resolved
.
tcp_addr
);
return
-
1
;
}
zmq_assert
(
addr
->
resolved
.
tcp_addr
!=
NULL
);
...
...
src/trie.cpp
View file @
1621c25e
...
...
@@ -52,13 +52,12 @@ zmq::trie_t::~trie_t ()
{
if
(
count
==
1
)
{
zmq_assert
(
next
.
node
);
delete
next
.
node
;
next
.
node
=
0
;
LIBZMQ_DELETE
(
next
.
node
);
}
else
if
(
count
>
1
)
{
for
(
unsigned
short
i
=
0
;
i
!=
count
;
++
i
)
delete
next
.
table
[
i
];
else
if
(
count
>
1
)
{
for
(
unsigned
short
i
=
0
;
i
!=
count
;
++
i
)
{
LIBZMQ_DELETE
(
next
.
table
[
i
]);
}
free
(
next
.
table
);
}
}
...
...
@@ -165,7 +164,7 @@ bool zmq::trie_t::rm (unsigned char *prefix_, size_t size_)
// Prune redundant nodes
if
(
next_node
->
is_redundant
())
{
delete
next_node
;
LIBZMQ_DELETE
(
next_node
)
;
zmq_assert
(
count
>
0
);
if
(
count
==
1
)
{
...
...
src/zmq.cpp
View file @
1621c25e
...
...
@@ -721,7 +721,7 @@ void *zmq_poller_new ()
int
zmq_poller_close
(
void
*
p
)
{
zmq
::
signaler_t
*
s
=
(
zmq
::
signaler_t
*
)
p
;
delete
s
;
LIBZMQ_DELETE
(
s
)
;
return
0
;
}
...
...
src/zmq_utils.cpp
View file @
1621c25e
...
...
@@ -88,7 +88,7 @@ void zmq_threadclose(void* thread)
{
zmq
::
thread_t
*
pThread
=
static_cast
<
zmq
::
thread_t
*>
(
thread
);
pThread
->
stop
();
delete
pThread
;
LIBZMQ_DELETE
(
pThread
)
;
}
// Z85 codec, taken from 0MQ RFC project, implements RFC32 Z85 encoding
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment