From b8aed9dfc2ae5e1c877707c856b061ee76b0e1c4 Mon Sep 17 00:00:00 2001
From: gregorycu <gregory.currie@gmail.com>
Date: Sun, 8 May 2016 19:02:11 +1000
Subject: [PATCH] Fixes #4098 ce8a9ed didn't quite go far enough, and left this
 bug in

---
 src/server.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/server.cpp b/src/server.cpp
index 0aba2796c..a3b686c25 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -1846,7 +1846,7 @@ void Server::SendPlayerHP(u16 peer_id)
 {
 	DSTACK(FUNCTION_NAME);
 	PlayerSAO *playersao = getPlayerSAO(peer_id);
-	// In some rare case, if the player is disconnected
+	// In some rare case if the player is disconnected
 	// while Lua call l_punch, for example, this can be NULL
 	if (!playersao)
 		return;
@@ -2515,9 +2515,11 @@ void Server::sendDetachedInventories(u16 peer_id)
 void Server::DiePlayer(u16 peer_id)
 {
 	DSTACK(FUNCTION_NAME);
-
 	PlayerSAO *playersao = getPlayerSAO(peer_id);
-	assert(playersao);
+	// In some rare cases this can be NULL -- if the player is disconnected
+	// when a Lua function modifies l_punch, for example
+	if (!playersao)
+		return;
 
 	infostream << "Server::DiePlayer(): Player "
 			<< playersao->getPlayer()->getName()
-- 
GitLab