1
0
Эх сурвалжийг харах

fixbug: referenced local variable

ithewei 4 жил өмнө
parent
commit
9f8e037390
1 өөрчлөгдсөн 5 нэмэгдсэн , 6 устгасан
  1. 5 6
      evpp/TcpServer.h

+ 5 - 6
evpp/TcpServer.h

@@ -70,15 +70,14 @@ public:
     }
 
     // channel
-    SocketChannelPtr addChannel(hio_t* io) {
+    const SocketChannelPtr& addChannel(hio_t* io) {
         std::lock_guard<std::mutex> locker(mutex_);
-        SocketChannelPtr channel(new SocketChannel(io));
-        int fd = channel->fd();
+        int fd = hio_fd(io);
         if (fd >= channels.capacity()) {
             channels.resize(2 * fd);
         }
-        channels[fd] = channel;
-        return channel;
+        channels[fd].reset(new SocketChannel(io));
+        return channels[fd];
     }
 
     void removeChannel(const SocketChannelPtr& channel) {
@@ -97,7 +96,7 @@ private:
             hio_close(connio);
             return;
         }
-        SocketChannelPtr channel = server->addChannel(connio);
+        const SocketChannelPtr& channel = server->addChannel(connio);
         channel->status = SocketChannel::CONNECTED;
         ++server->connection_num;