Use a Buffer instead of SharedBuffer in ConnectionCommand
authorLoic Blot <loic.blot@unix-experience.fr>
Tue, 5 Sep 2017 20:14:56 +0000 (22:14 +0200)
committerLoic Blot <loic.blot@unix-experience.fr>
Tue, 5 Sep 2017 20:14:56 +0000 (22:14 +0200)
This fixes #6373

src/network/connection.h
src/util/pointer.h

index d569722bf68593231e5cb037a4b5ed6a20ac46d4..5062b73d0aa333e85b3bf68f762fb39a0ab7ccbb 100644 (file)
@@ -325,7 +325,7 @@ struct ConnectionCommand
        Address address;
        u16 peer_id = PEER_ID_INEXISTENT;
        u8 channelnum = 0;
-       SharedBuffer<u8> data;
+       Buffer<u8> data;
        bool reliable = false;
        bool raw = false;
 
index efca62d2d3718813c7357c99ccfe66e44fdab8bd..59b6f5216a66e755ab0401a3ee142b1b9357b992 100644 (file)
@@ -168,6 +168,18 @@ public:
        /*
                Copies whole buffer
        */
+       SharedBuffer(const Buffer<T> &buffer)
+       {
+               m_size = buffer.getSize();
+               if (m_size != 0) {
+                               data = new T[m_size];
+                               memcpy(data, *buffer, buffer.getSize());
+               }
+               else
+                       data = NULL;
+               refcount = new unsigned int;
+               (*refcount) = 1;
+       }
        ~SharedBuffer()
        {
                drop();