diff --git a/src/hardware/hw_main.c b/src/hardware/hw_main.c
index 6bf5026dd1570766223c73aec0f9744ba2356bf9..8f06538b888ff61a3afc3c327f94fe8cee0b0dc3 100644
--- a/src/hardware/hw_main.c
+++ b/src/hardware/hw_main.c
@@ -2848,7 +2848,7 @@ static void HWR_DrawDropShadow(mobj_t *thing, gl_vissprite_t *spr, fixed_t scale
 	alpha = 255 - alpha;
 
 	gpatch = (cv_shadow.value == 2) ? spr->gpatch : (patch_t *)W_CachePatchName("DSHADOW", PU_SPRITE);
-	if (!(gpatch && ((GLPatch_t *)gpatch->hardware)->mipmap->format)) return;
+	if (!gpatch || !gpatch->hardware || !((GLPatch_t *)gpatch->hardware)->mipmap->format) return;
 	HWR_GetPatch(gpatch);
 
 	scalemul = FixedMul(FRACUNIT - floordiff/640, scale);