From e6305c55cd28fafd51c995ac474b8c8ae4be8dc7 Mon Sep 17 00:00:00 2001 From: RaveYard <29225776+MrRaveYard@users.noreply.github.com> Date: Tue, 1 Aug 2023 14:55:23 +0200 Subject: [PATCH] Fix strange crash when player's weapon is removed. --- src/rendering/hwrenderer/scene/hw_weapon.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/rendering/hwrenderer/scene/hw_weapon.cpp b/src/rendering/hwrenderer/scene/hw_weapon.cpp index 8631d2da6..12be4119e 100644 --- a/src/rendering/hwrenderer/scene/hw_weapon.cpp +++ b/src/rendering/hwrenderer/scene/hw_weapon.cpp @@ -691,10 +691,12 @@ void HWDrawInfo::PreparePlayerSprites2D(sector_t * viewsector, area_t in_area, F if(weap.weapon) { - PClass * cls = weap.weapon->GetCaller()->GetClass(); - ModifyBobLayer = cls->Virtuals.Size() > ModifyBobLayerVIndex ? cls->Virtuals[ModifyBobLayerVIndex] : nullptr; - - if( ModifyBobLayer == ModifyBobLayerOrigFunc) ModifyBobLayer = nullptr; + if(auto caller = weap.weapon->GetCaller()) + { + PClass* cls = caller->GetClass(); + ModifyBobLayer = cls->Virtuals.Size() > ModifyBobLayerVIndex ? cls->Virtuals[ModifyBobLayerVIndex] : nullptr; + if( ModifyBobLayer == ModifyBobLayerOrigFunc) ModifyBobLayer = nullptr; + } } // hack alert! Rather than changing everything in the underlying lighting code let's just temporarily change