fix wrong buffer length in web socket reserve

This commit is contained in:
me-no-dev
2018-07-05 11:06:51 +02:00
parent 232b87aeb1
commit b63ed5d93f

View File

@@ -146,7 +146,7 @@ AsyncWebSocketMessageBuffer::AsyncWebSocketMessageBuffer(uint8_t * data, size_t
return; return;
} }
_data = new uint8_t[size + 1]; _data = new uint8_t[_len + 1];
if (_data) { if (_data) {
memcpy(_data, data, _len); memcpy(_data, data, _len);
@@ -224,10 +224,9 @@ bool AsyncWebSocketMessageBuffer::reserve(size_t size)
_data = nullptr; _data = nullptr;
} }
_data = new uint8_t[size];
if (_data) { if (_data) {
_data[_len] = 0; _data[_len] = 0;
return true; return true;
} else { } else {
return false; return false;
@@ -873,8 +872,9 @@ void AsyncWebSocket::textAll(AsyncWebSocketMessageBuffer * buffer){
if (!buffer) return; if (!buffer) return;
buffer->lock(); buffer->lock();
for(const auto& c: _clients){ for(const auto& c: _clients){
if(c->status() == WS_CONNECTED) if(c->status() == WS_CONNECTED){
c->text(buffer); c->text(buffer);
}
} }
buffer->unlock(); buffer->unlock();
_cleanBuffers(); _cleanBuffers();
@@ -1140,9 +1140,10 @@ AsyncWebSocketMessageBuffer * AsyncWebSocket::makeBuffer(uint8_t * data, size_t
void AsyncWebSocket::_cleanBuffers() void AsyncWebSocket::_cleanBuffers()
{ {
for(const auto& c: _buffers){ for(AsyncWebSocketMessageBuffer * c: _buffers){
if(c->canDelete()) if(c && c->canDelete()){
_buffers.remove(c); _buffers.remove(c);
}
} }
} }