Commit b3d5fa63 authored by Osiris's avatar Osiris

Problem: Several problems found by Coverity Static Analyzer

Solution: The Coverity Static Code Analyzer was used on libzmq code and found
many issues with uninitialized member variables, some redefinition of variables
hidding previous instances of same variable name and a couple of functions
where return values were not checked, even though all other occurrences were
checked (e.g. init_size() return).
parent c5d83534
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="10.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}</ProjectGuid>
<ProjectName>inproc_lat</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="10.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{1077E977-95DD-4E73-A692-74647DD0CC1E}</ProjectGuid>
<ProjectName>inproc_thr</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="10.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{641C5F36-32EE-4323-B740-992B651CF9D6}</ProjectGuid>
<ProjectName>libzmq</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="10.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}</ProjectGuid>
<ProjectName>local_lat</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="10.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{8EF2DF6B-6646-460F-8032-913B70FE0E94}</ProjectGuid>
<ProjectName>local_thr</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="10.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}</ProjectGuid>
<ProjectName>remote_lat</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="10.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{B15E059C-0CBB-4A82-8C42-6567FB650802}</ProjectGuid>
<ProjectName>remote_thr</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="11.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}</ProjectGuid>
<ProjectName>inproc_lat</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="11.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{1077E977-95DD-4E73-A692-74647DD0CC1E}</ProjectGuid>
<ProjectName>inproc_thr</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="11.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{641C5F36-32EE-4323-B740-992B651CF9D6}</ProjectGuid>
<ProjectName>libzmq</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="11.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}</ProjectGuid>
<ProjectName>local_lat</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="11.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{8EF2DF6B-6646-460F-8032-913B70FE0E94}</ProjectGuid>
<ProjectName>local_thr</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="11.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}</ProjectGuid>
<ProjectName>remote_lat</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="11.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{B15E059C-0CBB-4A82-8C42-6567FB650802}</ProjectGuid>
<ProjectName>remote_thr</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{641C5F36-32EE-4323-B740-992B651CF9D6}</ProjectGuid>
<ProjectName>libzmq</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{6FF7436F-B3F6-4AE9-A3AC-CFDE8A3872A0}</ProjectGuid>
<ProjectName>inproc_lat</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{1077E977-95DD-4E73-A692-74647DD0CC1E}</ProjectGuid>
<ProjectName>inproc_thr</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{641C5F36-32EE-4323-B740-992B651CF9D6}</ProjectGuid>
<ProjectName>libzmq</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{4FDB8C73-9D4A-4D87-A4A9-A7FC06DFEA57}</ProjectGuid>
<ProjectName>local_lat</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{8EF2DF6B-6646-460F-8032-913B70FE0E94}</ProjectGuid>
<ProjectName>local_thr</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{9C20A37C-5D9F-4C4C-A2D9-E6EE91A077D1}</ProjectGuid>
<ProjectName>remote_lat</ProjectName>
......
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Label="Globals">
<ProjectGuid>{B15E059C-0CBB-4A82-8C42-6567FB650802}</ProjectGuid>
<ProjectName>remote_thr</ProjectName>
......
......@@ -108,6 +108,8 @@ f_compatible_get_tick_count64 init_compatible_get_tick_count64()
if (func == NULL)
func = compatible_get_tick_count64;
::FreeLibrary(module);
return func;
}
......
......@@ -332,13 +332,15 @@ int zmq::dish_session_t::pull_msg (msg_t *msg_)
int offset;
if (msg_->is_join ()) {
command.init_size (group_length + 5);
offset = 5;
rc = command.init_size (group_length + 5);
errno_assert(rc == 0);
offset = 5;
memcpy (command.data (), "\4JOIN", 5);
}
else {
command.init_size (group_length + 6);
offset = 6;
rc = command.init_size (group_length + 6);
errno_assert(rc == 0);
offset = 6;
memcpy (command.data (), "\5LEAVE", 6);
}
......@@ -349,7 +351,7 @@ int zmq::dish_session_t::pull_msg (msg_t *msg_)
memcpy (command_data + offset, msg_->group (), group_length);
// Close the join message
int rc = msg_->close ();
rc = msg_->close ();
errno_assert (rc == 0);
*msg_ = command;
......
......@@ -58,6 +58,10 @@ namespace zmq
inline encoder_base_t (size_t bufsize_) :
bufsize (bufsize_),
write_pos(0),
to_write(0),
next(nullptr),
new_msg_flag(false),
in_progress (NULL)
{
buf = (unsigned char*) malloc (bufsize_);
......
......@@ -157,7 +157,7 @@ int zmq::null_mechanism_t::process_handshake_command (msg_t *msg_)
}
if (rc == 0) {
int rc = msg_->close ();
rc = msg_->close ();
errno_assert (rc == 0);
rc = msg_->init ();
errno_assert (rc == 0);
......
......@@ -92,6 +92,7 @@ zmq::pipe_t::pipe_t (object_t *parent_, upipe_t *inpipe_, upipe_t *outpipe_,
sink (NULL),
state (active),
delay (true),
routing_id(0),
conflate (conflate_)
{
}
......
......@@ -53,7 +53,7 @@ void zmq::poller_base_t::adjust_load (int amount_)
load.add (amount_);
else
if (amount_ < 0)
load.sub (-amount_);
bool reset = load.sub (-amount_);
}
void zmq::poller_base_t::add_timer (int timeout_, i_poll_events *sink_, int id_)
......
......@@ -227,8 +227,9 @@ int zmq::radio_session_t::pull_msg (msg_t *msg_)
int length = (int) strlen (group);
// First frame is the group
msg_->init_size (length);
msg_->set_flags (msg_t::more);
rc = msg_->init_size (length);
errno_assert(rc == 0);
msg_->set_flags(msg_t::more);
memcpy (msg_->data (), group, length);
// Next status is the body
......
......@@ -36,6 +36,7 @@
zmq::reaper_t::reaper_t (class ctx_t *ctx_, uint32_t tid_) :
object_t (ctx_, tid_),
sockets (0),
mailbox_handle(NULL),
terminating (false)
{
poller = new (std::nothrow) poller_t (*ctx_);
......
......@@ -155,9 +155,9 @@ void zmq::router_t::xpipe_terminated (pipe_t *pipe_)
if (it != anonymous_pipes.end ())
anonymous_pipes.erase (it);
else {
outpipes_t::iterator it = outpipes.find (pipe_->get_identity ());
zmq_assert (it != outpipes.end ());
outpipes.erase (it);
outpipes_t::iterator iter = outpipes.find (pipe_->get_identity ());
zmq_assert (iter != outpipes.end ());
outpipes.erase (iter);
fq.pipe_terminated (pipe_);
if (pipe_ == current_out)
current_out = NULL;
......
......@@ -122,7 +122,7 @@ int zmq::server_t::xsend (msg_t *msg_)
bool ok = it->second.pipe->write (msg_);
if (unlikely (!ok)) {
// Message failed to send - we must close it ourselves.
int rc = msg_->close ();
rc = msg_->close ();
errno_assert (rc == 0);
}
else
......
......@@ -539,7 +539,8 @@ int zmq::signaler_t::make_fdpair (fd_t *r_, fd_t *w_)
saved_errno = WSAGetLastError ();
// We don't need the listening socket anymore. Close it.
closesocket (listener);
rc = closesocket (listener);
wsa_assert(rc != SOCKET_ERROR);
if (sync != NULL) {
// Exit the critical section.
......
......@@ -191,6 +191,8 @@ zmq::socket_base_t::socket_base_t (ctx_t *parent_, uint32_t tid_, int sid_, bool
monitor_socket (NULL),
monitor_events (0),
thread_safe (thread_safe_),
poller(nullptr),
handle(NULL),
reaper_signaler (NULL)
{
options.socket_id = sid_;
......@@ -452,7 +454,7 @@ int zmq::socket_base_t::getsockopt (int option_, void *optval_,
EXIT_MUTEX ();
return -1;
}
strcpy (static_cast <char *> (optval_), last_endpoint.c_str ());
strncpy(static_cast <char *> (optval_), last_endpoint.c_str(), last_endpoint.size() + 1);
*optvallen_ = last_endpoint.size () + 1;
EXIT_MUTEX ();
return 0;
......@@ -557,7 +559,7 @@ int zmq::socket_base_t::bind (const char *addr_)
if (protocol == "inproc") {
const endpoint_t endpoint = { this, options };
const int rc = register_endpoint (addr_, endpoint);
rc = register_endpoint (addr_, endpoint);
if (rc == 0) {
connect_pending (addr_, this);
last_endpoint.assign (addr_);
......@@ -590,7 +592,7 @@ int zmq::socket_base_t::bind (const char *addr_)
tcp_listener_t *listener = new (std::nothrow) tcp_listener_t (
io_thread, this, options);
alloc_assert (listener);
int rc = listener->set_address (address.c_str ());
rc = listener->set_address (address.c_str ());
if (rc != 0) {
LIBZMQ_DELETE(listener);
event_bind_failed (address, zmq_errno());
......@@ -739,7 +741,7 @@ int zmq::socket_base_t::connect (const char *addr_)
int hwms [2] = {conflate? -1 : sndhwm, conflate? -1 : rcvhwm};
bool conflates [2] = {conflate, conflate};
int rc = pipepair (parents, new_pipes, hwms, conflates);
rc = pipepair (parents, new_pipes, hwms, conflates);
if (!conflate) {
new_pipes[0]->set_hwms_boost(peer.options.sndhwm, peer.options.rcvhwm);
new_pipes[1]->set_hwms_boost(options.sndhwm, options.rcvhwm);
......@@ -894,7 +896,7 @@ int zmq::socket_base_t::connect (const char *addr_)
if (protocol == "udp") {
paddr->resolved.udp_addr = new (std::nothrow) udp_address_t ();
alloc_assert (paddr->resolved.udp_addr);
int rc = paddr->resolved.udp_addr->resolve (address.c_str());
rc = paddr->resolved.udp_addr->resolve (address.c_str());
if (rc != 0) {
LIBZMQ_DELETE(paddr);
EXIT_MUTEX ();
......@@ -1501,9 +1503,10 @@ void zmq::socket_base_t::in_event ()
if (thread_safe)
reaper_signaler->recv();
process_commands (0, false);
EXIT_MUTEX ();
check_destroy ();
int rc = process_commands (0, false);
EXIT_MUTEX();
errno_assert(rc == 0);
check_destroy();
}
void zmq::socket_base_t::out_event ()
......
......@@ -34,12 +34,20 @@
zmq::socket_poller_t::socket_poller_t () :
tag (0xCAFEBABE),
need_rebuild (true),
poll_size(0),
maxfd(0),
use_signaler (false)
#if defined ZMQ_POLL_BASED_ON_POLL
,
pollfds (NULL)
#endif
{
#if defined ZMQ_POLL_BASED_ON_SELECT
memset(&pollset_in, 0, sizeof(pollset_in));
memset(&pollset_out, 0, sizeof(pollset_in));
memset(&pollset_err, 0, sizeof(pollset_in));
maxfd = 0;
#endif
}
zmq::socket_poller_t::~socket_poller_t ()
......
......@@ -63,6 +63,9 @@ zmq::socks_connecter_t::socks_connecter_t (class io_thread_t *io_thread_,
s (retired_fd),
delayed_start (delayed_start_),
session (session_),
handle(NULL),
handle_valid(false),
timer_started(false),
current_reconnect_ivl (options.reconnect_ivl)
{
zmq_assert (addr);
......@@ -113,13 +116,13 @@ void zmq::socks_connecter_t::in_event ()
&& status != waiting_for_reconnect_time);
if (status == waiting_for_choice) {
const int rc = choice_decoder.input (s);
int rc = choice_decoder.input (s);
if (rc == 0 || rc == -1)
error ();
else
if (choice_decoder.message_ready ()) {
const socks_choice_t choice = choice_decoder.decode ();
const int rc = process_server_response (choice);
rc = process_server_response (choice);
if (rc == -1)
error ();
else {
......@@ -139,13 +142,13 @@ void zmq::socks_connecter_t::in_event ()
}
else
if (status == waiting_for_response) {
const int rc = response_decoder.input (s);
int rc = response_decoder.input (s);
if (rc == 0 || rc == -1)
error ();
else
if (response_decoder.message_ready ()) {
const socks_response_t response = response_decoder.decode ();
const int rc = process_server_response (response);
rc = process_server_response (response);
if (rc == -1)
error ();
else {
......
......@@ -87,6 +87,8 @@ zmq::stream_engine_t::stream_engine_t (fd_t fd_, const options_t &options_,
has_timeout_timer (false),
has_heartbeat_timer (false),
heartbeat_timeout (0),
as_server(false),
handle(NULL),
socket (NULL)
{
int rc = tx_msg.init ();
......@@ -1018,8 +1020,9 @@ int zmq::stream_engine_t::produce_ping_message(msg_t * msg_)
zmq_assert (mechanism != NULL);
// 16-bit TTL + \4PING == 7
msg_->init_size(7);
msg_->set_flags(msg_t::command);
rc = msg_->init_size(7);
errno_assert(rc == 0);
msg_->set_flags(msg_t::command);
// Copy in the command message
memcpy(msg_->data(), "\4PING", 5);
......@@ -1040,8 +1043,9 @@ int zmq::stream_engine_t::produce_pong_message(msg_t * msg_)
int rc = 0;
zmq_assert (mechanism != NULL);
msg_->init_size(5);
msg_->set_flags(msg_t::command);
rc = msg_->init_size(5);
errno_assert(rc == 0);
msg_->set_flags(msg_t::command);
memcpy(msg_->data(), "\4PONG", 5);
......
......@@ -72,6 +72,7 @@ zmq::tcp_connecter_t::tcp_connecter_t (class io_thread_t *io_thread_,
connect_timer_started (false),
reconnect_timer_started (false),
session (session_),
handle(NULL),
current_reconnect_ivl (options.reconnect_ivl)
{
zmq_assert (addr);
......
......@@ -65,6 +65,7 @@ zmq::tcp_listener_t::tcp_listener_t (io_thread_t *io_thread_,
own_t (io_thread_, options_),
io_object_t (io_thread_),
s (retired_fd),
handle(NULL),
socket (socket_)
{
}
......
......@@ -55,6 +55,9 @@ namespace zmq
public:
inline thread_t ()
: tfn(nullptr)
, arg(nullptr)
, descriptor(NULL)
{
}
......
......@@ -48,6 +48,7 @@
#endif
zmq::udp_address_t::udp_address_t ()
: is_mutlicast(false)
{
memset (&bind_address, 0, sizeof bind_address);
memset (&dest_address, 0, sizeof dest_address);
......
......@@ -48,6 +48,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
zmq::udp_engine_t::udp_engine_t() :
plugged (false),
fd(NULL),
address(nullptr),
send_enabled(false),
recv_enabled(false),
handle(NULL),
session(NULL)
{
}
......@@ -122,7 +127,7 @@ void zmq::udp_engine_t::plug (io_thread_t* io_thread_, session_base_t *session_)
struct ip_mreq mreq;
mreq.imr_multiaddr = address->resolved.udp_addr->multicast_ip ();
mreq.imr_interface = address->resolved.udp_addr->interface_ip ();
int rc = setsockopt (fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*) &mreq, sizeof (mreq));
rc = setsockopt (fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*) &mreq, sizeof (mreq));
#ifdef ZMQ_HAVE_WINDOWS
wsa_assert (rc != SOCKET_ERROR);
#else
......
......@@ -173,7 +173,8 @@ int zmq::xpub_t::xsetsockopt (int option_, const void *optval_,
welcome_msg.close();
if (optvallen_ > 0) {
welcome_msg.init_size(optvallen_);
int rc = welcome_msg.init_size(optvallen_);
errno_assert(rc == 0);
unsigned char *data = (unsigned char*)welcome_msg.data();
memcpy(data, optval_, optvallen_);
......
......@@ -925,12 +925,9 @@ int zmq_poll (zmq_pollitem_t *items_, int nitems_, long timeout_)
// file descriptors.
zmq_assert (nitems_ <= FD_SETSIZE);
fd_set pollset_in;
FD_ZERO (&pollset_in);
fd_set pollset_out;
FD_ZERO (&pollset_out);
fd_set pollset_err;
FD_ZERO (&pollset_err);
fd_set pollset_in = { 0 };
fd_set pollset_out = { 0 };
fd_set pollset_err = { 0 };
zmq::fd_t maxfd = 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment