diff options
author | Loïc Blot <loic.blot@unix-experience.fr> | 2017-08-28 17:12:30 +0200 |
---|---|---|
committer | Loïc Blot <loic.blot@unix-experience.fr> | 2017-08-28 17:12:46 +0200 |
commit | 6fd8a27c91b09f51693243586af3615f962d1730 (patch) | |
tree | 17a22d5e185cb6171a89343b090a3661edfe8306 | |
parent | 04158d0c848b73bb9d4615c605fe51a180ba9d2c (diff) | |
download | minetest-6fd8a27c91b09f51693243586af3615f962d1730.tar.gz minetest-6fd8a27c91b09f51693243586af3615f962d1730.tar.bz2 minetest-6fd8a27c91b09f51693243586af3615f962d1730.zip |
Pass SharedBuffer as value to increment reference count
This should fix #6332
Refcount is not increased due to reference, it can make this refcount incorrect in a multithread context
-rw-r--r-- | src/network/connectionthreads.cpp | 10 | ||||
-rw-r--r-- | src/network/connectionthreads.h | 12 |
2 files changed, 11 insertions, 11 deletions
diff --git a/src/network/connectionthreads.cpp b/src/network/connectionthreads.cpp index b07acd469..63c1855c5 100644 --- a/src/network/connectionthreads.cpp +++ b/src/network/connectionthreads.cpp @@ -1098,7 +1098,7 @@ bool ConnectionReceiveThread::checkIncomingBuffers(Channel *channel, } SharedBuffer<u8> ConnectionReceiveThread::processPacket(Channel *channel, - SharedBuffer<u8> &packetdata, u16 peer_id, u8 channelnum, bool reliable) + SharedBuffer<u8> packetdata, u16 peer_id, u8 channelnum, bool reliable) { PeerHelper peer = m_connection->getPeerNoEx(peer_id); @@ -1137,7 +1137,7 @@ const ConnectionReceiveThread::PacketTypeHandler }; SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Control(Channel *channel, - SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, bool reliable) + SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable) { if (packetdata.getSize() < 2) throw InvalidIncomingDataException("packetdata.getSize() < 2"); @@ -1247,7 +1247,7 @@ SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Control(Channel *chan } SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Original(Channel *channel, - SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, bool reliable) + SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable) { if (packetdata.getSize() <= ORIGINAL_HEADER_SIZE) throw InvalidIncomingDataException @@ -1261,7 +1261,7 @@ SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Original(Channel *cha } SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Split(Channel *channel, - SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, bool reliable) + SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable) { Address peer_address; @@ -1292,7 +1292,7 @@ SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Split(Channel *channe } SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Reliable(Channel *channel, - SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, bool reliable) + SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable) { assert(channel != NULL); diff --git a/src/network/connectionthreads.h b/src/network/connectionthreads.h index 11bec0c6c..c2314f87f 100644 --- a/src/network/connectionthreads.h +++ b/src/network/connectionthreads.h @@ -118,26 +118,26 @@ private: channelnum: channel on which the packet was sent reliable: true if recursing into a reliable packet */ - SharedBuffer<u8> processPacket(Channel *channel, SharedBuffer<u8> &packetdata, + SharedBuffer<u8> processPacket(Channel *channel, SharedBuffer<u8> packetdata, u16 peer_id, u8 channelnum, bool reliable); SharedBuffer<u8> handlePacketType_Control(Channel *channel, - SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, + SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable); SharedBuffer<u8> handlePacketType_Original(Channel *channel, - SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, + SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable); SharedBuffer<u8> handlePacketType_Split(Channel *channel, - SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, + SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable); SharedBuffer<u8> handlePacketType_Reliable(Channel *channel, - SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, + SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable); struct PacketTypeHandler { SharedBuffer<u8> (ConnectionReceiveThread::*handler)(Channel *channel, - SharedBuffer<u8> &packet, Peer *peer, u8 channelnum, + SharedBuffer<u8> packet, Peer *peer, u8 channelnum, bool reliable); }; |