aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCerapter <cerap@protonmail.com>2018-08-19 08:41:00 +0200
committerCerapter <cerap@protonmail.com>2018-08-19 08:41:00 +0200
commited68084e08ace1e210a64a562fd6316fc06954a7 (patch)
treecd73ccab06166c6e0ab65d0b5bc46a12a05fcad4
parentfeee84588c1caa6307ea8bdfdc030936790eed35 (diff)
Segfault fix.
Reimplementation of `0e15be73af266d5fbff3d83d731a7af2773ff532` from old origin.
-rw-r--r--networkmanager.cpp12
-rw-r--r--networkmanager.h1
2 files changed, 9 insertions, 4 deletions
diff --git a/networkmanager.cpp b/networkmanager.cpp
index ea0d811c..909c7da7 100644
--- a/networkmanager.cpp
+++ b/networkmanager.cpp
@@ -4,6 +4,8 @@
#include "debug_functions.h"
#include "lobby.h"
+#include <cstring>
+
NetworkManager::NetworkManager(AOApplication *parent) : QObject(parent)
{
@@ -79,8 +81,9 @@ void NetworkManager::ship_server_packet(QString p_packet)
void NetworkManager::handle_ms_packet()
{
- char buffer[16384] = {0};
- ms_socket->read(buffer, ms_socket->bytesAvailable());
+ char buffer[buffer_max_size];
+ std::memset(buffer, 0, buffer_max_size);
+ ms_socket->read(buffer, buffer_max_size);
QString in_data = buffer;
@@ -217,8 +220,9 @@ void NetworkManager::retry_ms_connect()
void NetworkManager::handle_server_packet()
{
- char buffer[16384] = {0};
- server_socket->read(buffer, server_socket->bytesAvailable());
+ char buffer[buffer_max_size];
+ std::memset(buffer, 0, buffer_max_size);
+ server_socket->read(buffer, buffer_max_size);
QString in_data = buffer;
diff --git a/networkmanager.h b/networkmanager.h
index 6954d19e..797950a1 100644
--- a/networkmanager.h
+++ b/networkmanager.h
@@ -47,6 +47,7 @@ public:
const int timeout_milliseconds = 2000;
const int ms_reconnect_delay_ms = 7000;
+ const size_t buffer_max_size = 16384;
bool ms_partial_packet = false;
QString ms_temp_packet = "";