From 34f2aef248c08329e7a967c291986ce73d45b072 Mon Sep 17 00:00:00 2001 From: Gent Date: Tue, 10 Nov 2020 18:00:34 -0500 Subject: [PATCH] Fix seg fault in buddy data for deleted player --- src/BuddyManager.cpp | 2 ++ src/Database.cpp | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/BuddyManager.cpp b/src/BuddyManager.cpp index 3b20c11..3764f0b 100644 --- a/src/BuddyManager.cpp +++ b/src/BuddyManager.cpp @@ -65,6 +65,8 @@ void BuddyManager::refreshBuddyList(CNSocket* sock) { if (buddyID != 0) { sBuddyBaseInfo buddyInfo = {}; Database::DbPlayer buddyPlayerData = Database::getDbPlayerById(buddyID); + if (buddyPlayerData.PlayerID == -1) + continue; buddyInfo.bBlocked = 0; buddyInfo.bFreeChat = 1; buddyInfo.iGender = buddyPlayerData.Gender; diff --git a/src/Database.cpp b/src/Database.cpp index 0741dd8..153f848 100644 --- a/src/Database.cpp +++ b/src/Database.cpp @@ -500,7 +500,10 @@ Player Database::DbToPlayer(DbPlayer player) { } Database::DbPlayer Database::getDbPlayerById(int id) { - return db.get_all(where(c(&DbPlayer::PlayerID) == id)).front(); + auto player = db.get_all(where(c(&DbPlayer::PlayerID) == id)); + if (player.size() < 1) + return DbPlayer{ -1 }; + return player.front(); } Player Database::getPlayer(int id) {