From 159d4f9cd0537cab5a87a873a172c571d02d4afc Mon Sep 17 00:00:00 2001
From: Andrey Kleshchev <andreykproductengine@lindenlab.com>
Date: Thu, 24 Nov 2022 22:31:20 +0200
Subject: [PATCH] SL-18708 Shutdown crash at renderHeavenlyBodies

---
 indra/newview/lldrawpoolwlsky.cpp | 4 +++-
 indra/newview/llworld.cpp         | 2 ++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/indra/newview/lldrawpoolwlsky.cpp b/indra/newview/lldrawpoolwlsky.cpp
index 7157214cbce..6678e244b94 100644
--- a/indra/newview/lldrawpoolwlsky.cpp
+++ b/indra/newview/lldrawpoolwlsky.cpp
@@ -451,11 +451,13 @@ void LLDrawPoolWLSky::renderSkyClouds(const LLVector3& camPosLocal, F32 camHeigh
 
 void LLDrawPoolWLSky::renderHeavenlyBodies()
 {
+    if (!gSky.mVOSkyp) return;
+
 	LLGLSPipelineBlendSkyBox gls_skybox(true, false);
 
     LLVector3 const & origin = LLViewerCamera::getInstance()->getOrigin();
 	gGL.pushMatrix();
-	gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);	        
+	gGL.translatef(origin.mV[0], origin.mV[1], origin.mV[2]);
 
 	LLFace * face = gSky.mVOSkyp->mFace[LLVOSky::FACE_SUN];
 
diff --git a/indra/newview/llworld.cpp b/indra/newview/llworld.cpp
index c5aff417463..eba9715ab5e 100644
--- a/indra/newview/llworld.cpp
+++ b/indra/newview/llworld.cpp
@@ -38,6 +38,7 @@
 #include "llglheaders.h"
 #include "llhttpnode.h"
 #include "llregionhandle.h"
+#include "llsky.h"
 #include "llsurface.h"
 #include "lltrans.h"
 #include "llviewercamera.h"
@@ -117,6 +118,7 @@ void LLWorld::resetClass()
 {
 	mHoleWaterObjects.clear();
 	gObjectList.destroy();
+    gSky.cleanup(); // references an object
 	for(region_list_t::iterator region_it = mRegionList.begin(); region_it != mRegionList.end(); )
 	{
 		LLViewerRegion* region_to_delete = *region_it++;
-- 
GitLab