From 8b82ed50a295f6ddcca2fe9608f146c8e428c8ac Mon Sep 17 00:00:00 2001 From: Luca Boccassi Date: Sun, 13 May 2018 13:16:37 +0100 Subject: [PATCH] Problem: Solaris Studio does not convert from char * to string Solution: do it explicitly to fix build on Solaris 10/11 with the Sun compiler --- src/ctx.cpp | 3 ++- src/mechanism.cpp | 3 ++- src/socket_base.cpp | 4 ++-- src/stream_engine.cpp | 7 ++++--- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/ctx.cpp b/src/ctx.cpp index eb272930..7a0c29bf 100644 --- a/src/ctx.cpp +++ b/src/ctx.cpp @@ -503,7 +503,8 @@ int zmq::ctx_t::register_endpoint (const char *addr_, scoped_lock_t locker (endpoints_sync); const bool inserted = - endpoints.ZMQ_MAP_INSERT_OR_EMPLACE (addr_, endpoint_).second; + endpoints.ZMQ_MAP_INSERT_OR_EMPLACE (std::string (addr_), endpoint_) + .second; if (!inserted) { errno = EADDRINUSE; return -1; diff --git a/src/mechanism.cpp b/src/mechanism.cpp index b8a32c66..e4abb1a4 100644 --- a/src/mechanism.cpp +++ b/src/mechanism.cpp @@ -62,7 +62,8 @@ void zmq::mechanism_t::set_user_id (const void *data_, size_t size_) { user_id.set (static_cast (data_), size_); zap_properties.ZMQ_MAP_INSERT_OR_EMPLACE ( - ZMQ_MSG_PROPERTY_USER_ID, std::string ((char *) data_, size_)); + std::string (ZMQ_MSG_PROPERTY_USER_ID), + std::string ((char *) data_, size_)); } const zmq::blob_t &zmq::mechanism_t::get_user_id () const diff --git a/src/socket_base.cpp b/src/socket_base.cpp index 908ceba6..0f1af431 100644 --- a/src/socket_base.cpp +++ b/src/socket_base.cpp @@ -783,7 +783,7 @@ int zmq::socket_base_t::connect (const char *addr_) last_endpoint.assign (addr_); // remember inproc connections for disconnect - inprocs.ZMQ_MAP_INSERT_OR_EMPLACE (addr_, new_pipes[0]); + inprocs.ZMQ_MAP_INSERT_OR_EMPLACE (std::string (addr_), new_pipes[0]); options.connected = true; return 0; @@ -982,7 +982,7 @@ void zmq::socket_base_t::add_endpoint (const char *addr_, { // Activate the session. Make it a child of this socket. launch_child (endpoint_); - endpoints.ZMQ_MAP_INSERT_OR_EMPLACE (addr_, + endpoints.ZMQ_MAP_INSERT_OR_EMPLACE (std::string (addr_), endpoint_pipe_t (endpoint_, pipe)); } diff --git a/src/stream_engine.cpp b/src/stream_engine.cpp index e6455318..354a70da 100644 --- a/src/stream_engine.cpp +++ b/src/stream_engine.cpp @@ -999,14 +999,15 @@ bool zmq::stream_engine_t::init_properties (properties_t &properties) { if (peer_address.empty ()) return false; - properties.ZMQ_MAP_INSERT_OR_EMPLACE (ZMQ_MSG_PROPERTY_PEER_ADDRESS, - peer_address); + properties.ZMQ_MAP_INSERT_OR_EMPLACE ( + std::string (ZMQ_MSG_PROPERTY_PEER_ADDRESS), peer_address); // Private property to support deprecated SRCFD std::ostringstream stream; stream << (int) s; std::string fd_string = stream.str (); - properties.ZMQ_MAP_INSERT_OR_EMPLACE ("__fd", ZMQ_MOVE (fd_string)); + properties.ZMQ_MAP_INSERT_OR_EMPLACE (std::string ("__fd"), + ZMQ_MOVE (fd_string)); return true; }