From 7922e6addb06de89cc73c64d30321aa6710e30ce Mon Sep 17 00:00:00 2001 From: Lukas Pioch Date: Mon, 29 May 2017 21:33:30 +0200 Subject: Fixes problems with windows: - Changed cPlayer:OpenWindow to accept a ref, tolua adds a nil check - Close open lua window in destructor, to avoid dangling pointers --- src/Entities/Minecart.cpp | 2 +- src/Entities/Player.cpp | 10 +++++----- src/Entities/Player.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) (limited to 'src/Entities') diff --git a/src/Entities/Minecart.cpp b/src/Entities/Minecart.cpp index b8e8e9f29..7f32dc910 100644 --- a/src/Entities/Minecart.cpp +++ b/src/Entities/Minecart.cpp @@ -1222,7 +1222,7 @@ void cMinecartWithChest::OnRightClicked(cPlayer & a_Player) { if (a_Player.GetWindow() != Window) { - a_Player.OpenWindow(Window); + a_Player.OpenWindow(*Window); } } } diff --git a/src/Entities/Player.cpp b/src/Entities/Player.cpp index c0a078bcb..b11c07a0b 100644 --- a/src/Entities/Player.cpp +++ b/src/Entities/Player.cpp @@ -1310,15 +1310,15 @@ cTeam * cPlayer::UpdateTeam(void) -void cPlayer::OpenWindow(cWindow * a_Window) +void cPlayer::OpenWindow(cWindow & a_Window) { - if (a_Window != m_CurrentWindow) + if (&a_Window != m_CurrentWindow) { CloseWindow(false); } - a_Window->OpenedByPlayer(*this); - m_CurrentWindow = a_Window; - a_Window->SendWholeWindow(*GetClientHandle()); + a_Window.OpenedByPlayer(*this); + m_CurrentWindow = &a_Window; + a_Window.SendWholeWindow(*GetClientHandle()); } diff --git a/src/Entities/Player.h b/src/Entities/Player.h index d25432e9f..dc8f07823 100644 --- a/src/Entities/Player.h +++ b/src/Entities/Player.h @@ -229,7 +229,7 @@ public: // tolua_begin /** Opens the specified window; closes the current one first using CloseWindow() */ - void OpenWindow(cWindow * a_Window); + void OpenWindow(cWindow & a_Window); /** Closes the current window, resets current window to m_InventoryWindow. A plugin may refuse the closing if a_CanRefuse is true */ void CloseWindow(bool a_CanRefuse = true); -- cgit v1.2.3