From ed68084e08ace1e210a64a562fd6316fc06954a7 Mon Sep 17 00:00:00 2001 From: Cerapter Date: Sun, 19 Aug 2018 08:41:00 +0200 Subject: [PATCH] Segfault fix. Reimplementation of `0e15be73af266d5fbff3d83d731a7af2773ff532` from old origin. --- networkmanager.cpp | 12 ++++++++---- networkmanager.h | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/networkmanager.cpp b/networkmanager.cpp index ea0d811..909c7da 100644 --- a/networkmanager.cpp +++ b/networkmanager.cpp @@ -4,6 +4,8 @@ #include "debug_functions.h" #include "lobby.h" +#include + 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 6954d19..797950a 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 = "";