From 928806b142aeef149a95fb147459f1accfe259d9 Mon Sep 17 00:00:00 2001
From: Rye Mutt <rye@alchemyviewer.org>
Date: Fri, 21 Aug 2020 18:56:01 -0400
Subject: [PATCH] The great default and finalization pass round 2!

---
 indra/llaudio/llaudiodecodemgr.cpp        |  2 +-
 indra/llaudio/llaudioengine.cpp           |  5 -----
 indra/llaudio/llaudioengine.h             |  4 ++--
 indra/llaudio/llaudioengine_openal.h      |  2 +-
 indra/llcharacter/lleditingmotion.h       |  2 +-
 indra/llcharacter/llhandmotion.cpp        |  8 --------
 indra/llcharacter/llhandmotion.h          |  4 ++--
 indra/llcharacter/llheadrotmotion.h       |  2 +-
 indra/llcharacter/llkeyframefallmotion.h  |  2 +-
 indra/llcharacter/llkeyframemotionparam.h |  2 +-
 indra/llcharacter/llkeyframestandmotion.h |  2 +-
 indra/llcharacter/llkeyframewalkmotion.h  |  6 +++---
 indra/llcharacter/llmotion.h              |  4 ++--
 indra/llcharacter/llpose.cpp              |  5 -----
 indra/llcharacter/llpose.h                |  2 +-
 indra/llcharacter/llstatemachine.h        |  6 +++---
 indra/llcharacter/lltargetingmotion.h     |  2 +-
 indra/llmessage/llbuffer.h                |  2 +-
 indra/llmessage/lldatapacker.h            |  8 ++++----
 indra/llmessage/llhttpnode.cpp            |  4 ----
 indra/llmessage/llhttpnode.h              |  4 ++--
 indra/llmessage/llhttpnodeadapter.h       |  2 +-
 indra/llmessage/llmessagetemplate.h       |  7 ++-----
 indra/llmessage/llmessagethrottle.cpp     |  8 --------
 indra/llmessage/llmessagethrottle.h       |  4 ++--
 indra/llmessage/llnullcipher.h            |  4 ++--
 indra/llmessage/llpacketack.h             |  2 +-
 indra/llmessage/llpacketbuffer.cpp        |  6 ------
 indra/llmessage/llpacketbuffer.h          |  2 +-
 indra/llmessage/llsdmessagereader.h       |  2 +-
 indra/llmessage/lltemplatemessagereader.h |  2 +-
 indra/llmessage/llthrottle.h              |  4 ++--
 indra/llmessage/machine.h                 |  2 +-
 indra/llmessage/partsyspacket.cpp         |  5 -----
 indra/llmessage/partsyspacket.h           |  2 +-
 indra/llprimitive/lldaeloader.h           |  2 +-
 indra/llprimitive/llmaterial.h            |  2 +-
 indra/llprimitive/llmaterialtable.h       |  4 +---
 indra/llprimitive/llmodel.h               |  8 ++++----
 indra/llprimitive/llprimitive.h           | 12 ++++++------
 indra/llprimitive/llprimtexturelist.h     |  5 +----
 indra/llprimitive/lltextureanim.cpp       |  6 ------
 indra/llprimitive/lltextureanim.h         |  2 +-
 indra/llprimitive/lltreeparams.cpp        |  7 +------
 indra/llprimitive/lltreeparams.h          |  2 +-
 indra/llvfs/lldir_linux.cpp               |  4 ----
 indra/llvfs/lldir_linux.h                 |  4 ++--
 indra/llvfs/lldir_mac.h                   |  2 +-
 indra/llvfs/lldir_win32.h                 |  2 +-
 indra/llvfs/lldiriterator.cpp             |  6 +-----
 indra/llwindow/llkeyboardsdl.h            |  2 +-
 indra/llwindow/llwindowsdl.h              |  2 +-
 indra/llxml/llcontrol.h                   |  6 +++---
 indra/newview/llbreastmotion.h            |  2 +-
 indra/newview/llcolorswatch.h             |  2 +-
 indra/newview/llemote.h                   |  2 +-
 indra/newview/llexpandabletextbox.h       |  2 +-
 indra/newview/llgroupiconctrl.h           |  2 +-
 indra/newview/llgrouplist.h               |  2 +-
 indra/newview/llhttpretrypolicy.h         |  6 +++---
 indra/newview/llhudicon.h                 |  2 +-
 indra/newview/llhudnametag.h              |  2 +-
 indra/newview/llhudtext.h                 |  2 +-
 indra/newview/llmediactrl.h               |  2 +-
 indra/newview/llphysicsmotion.h           |  2 +-
 indra/newview/llviewerwindow.h            |  2 +-
 indra/newview/llvoavatar.cpp              |  6 +++---
 indra/newview/llvovolume.cpp              |  2 +-
 68 files changed, 89 insertions(+), 157 deletions(-)

diff --git a/indra/llaudio/llaudiodecodemgr.cpp b/indra/llaudio/llaudiodecodemgr.cpp
index cb22eaec5e7..bca72375122 100644
--- a/indra/llaudio/llaudiodecodemgr.cpp
+++ b/indra/llaudio/llaudiodecodemgr.cpp
@@ -61,7 +61,7 @@ static const S32 WAV_HEADER_SIZE = 44;
 //////////////////////////////////////////////////////////////////////////////
 
 
-class LLVorbisDecodeState : public LLRefCount
+class LLVorbisDecodeState final : public LLRefCount
 {
 public:
 	class WriteResponder : public LLLFSThread::Responder
diff --git a/indra/llaudio/llaudioengine.cpp b/indra/llaudio/llaudioengine.cpp
index 7d41226b497..3419e86cc49 100644
--- a/indra/llaudio/llaudioengine.cpp
+++ b/indra/llaudio/llaudioengine.cpp
@@ -57,11 +57,6 @@ LLAudioEngine::LLAudioEngine()
 	setDefaults();
 }
 
-
-LLAudioEngine::~LLAudioEngine()
-{
-}
-
 LLStreamingAudioInterface* LLAudioEngine::getStreamingAudioImpl()
 {
 	return mStreamingAudioImpl;
diff --git a/indra/llaudio/llaudioengine.h b/indra/llaudio/llaudioengine.h
index 97674f15f7a..b4e22fae8c3 100644
--- a/indra/llaudio/llaudioengine.h
+++ b/indra/llaudio/llaudioengine.h
@@ -96,7 +96,7 @@ class LLAudioEngine
 	};
 	
 	LLAudioEngine();
-	virtual ~LLAudioEngine();
+	virtual ~LLAudioEngine() = default;
 
 	// initialization/startup/shutdown
 	virtual bool init(const S32 num_channels, void *userdata, const std::string &app_title);
@@ -445,7 +445,7 @@ class LLAudioChannel
 class LLAudioBuffer
 {
 public:
-	virtual ~LLAudioBuffer() {};
+	virtual ~LLAudioBuffer() = default;
 	virtual bool loadWAV(const std::string& filename) = 0;
 	virtual U32 getLength() = 0;
 
diff --git a/indra/llaudio/llaudioengine_openal.h b/indra/llaudio/llaudioengine_openal.h
index b6bd4b16d6c..29108d7a0f3 100644
--- a/indra/llaudio/llaudioengine_openal.h
+++ b/indra/llaudio/llaudioengine_openal.h
@@ -34,7 +34,7 @@
 #include "lllistener_openal.h"
 #include "llwindgen.h"
 
-class LLAudioEngine_OpenAL : public LLAudioEngine
+class LLAudioEngine_OpenAL final : public LLAudioEngine
 {
 	public:
 		LLAudioEngine_OpenAL();
diff --git a/indra/llcharacter/lleditingmotion.h b/indra/llcharacter/lleditingmotion.h
index 7b1c8bb0598..b11398ae78e 100644
--- a/indra/llcharacter/lleditingmotion.h
+++ b/indra/llcharacter/lleditingmotion.h
@@ -42,7 +42,7 @@
 //-----------------------------------------------------------------------------
 // class LLEditingMotion
 //-----------------------------------------------------------------------------
-class LLEditingMotion :
+class LLEditingMotion final :
 	public LLMotion
 {
 public:
diff --git a/indra/llcharacter/llhandmotion.cpp b/indra/llcharacter/llhandmotion.cpp
index b3bf5a9a919..4043d1b8bee 100644
--- a/indra/llcharacter/llhandmotion.cpp
+++ b/indra/llcharacter/llhandmotion.cpp
@@ -76,14 +76,6 @@ LLHandMotion::LLHandMotion(const LLUUID &id) : LLMotion(id)
 }
 
 
-//-----------------------------------------------------------------------------
-// ~LLHandMotion()
-// Class Destructor
-//-----------------------------------------------------------------------------
-LLHandMotion::~LLHandMotion()
-{
-}
-
 //-----------------------------------------------------------------------------
 // LLHandMotion::onInitialize(LLCharacter *character)
 //-----------------------------------------------------------------------------
diff --git a/indra/llcharacter/llhandmotion.h b/indra/llcharacter/llhandmotion.h
index 08de7056c8e..8432e744ddc 100644
--- a/indra/llcharacter/llhandmotion.h
+++ b/indra/llcharacter/llhandmotion.h
@@ -38,7 +38,7 @@
 //-----------------------------------------------------------------------------
 // class LLHandMotion
 //-----------------------------------------------------------------------------
-class LLHandMotion :
+class LLHandMotion final :
 	public LLMotion
 {
 public:
@@ -65,7 +65,7 @@ class LLHandMotion :
 	LLHandMotion(const LLUUID &id);
 
 	// Destructor
-	virtual ~LLHandMotion();
+	virtual ~LLHandMotion() = default;
 
 public:
 	//-------------------------------------------------------------------------
diff --git a/indra/llcharacter/llheadrotmotion.h b/indra/llcharacter/llheadrotmotion.h
index 53ae1813bc1..66612f84646 100644
--- a/indra/llcharacter/llheadrotmotion.h
+++ b/indra/llcharacter/llheadrotmotion.h
@@ -39,7 +39,7 @@
 //-----------------------------------------------------------------------------
 // class LLHeadRotMotion
 //-----------------------------------------------------------------------------
-class LLHeadRotMotion :
+class LLHeadRotMotion final :
 	public LLMotion
 {
 public:
diff --git a/indra/llcharacter/llkeyframefallmotion.h b/indra/llcharacter/llkeyframefallmotion.h
index 7f0a2fdda28..cd67475be27 100644
--- a/indra/llcharacter/llkeyframefallmotion.h
+++ b/indra/llcharacter/llkeyframefallmotion.h
@@ -36,7 +36,7 @@
 //-----------------------------------------------------------------------------
 // class LLKeyframeFallMotion
 //-----------------------------------------------------------------------------
-class LLKeyframeFallMotion :
+class LLKeyframeFallMotion final :
 	public LLKeyframeMotion
 {
 public:
diff --git a/indra/llcharacter/llkeyframemotionparam.h b/indra/llcharacter/llkeyframemotionparam.h
index 0fac3724d14..151dd3105b1 100644
--- a/indra/llcharacter/llkeyframemotionparam.h
+++ b/indra/llcharacter/llkeyframemotionparam.h
@@ -42,7 +42,7 @@
 //-----------------------------------------------------------------------------
 // class LLKeyframeMotionParam
 //-----------------------------------------------------------------------------
-class LLKeyframeMotionParam :
+class LLKeyframeMotionParam final :
 	public LLMotion
 {
 public:
diff --git a/indra/llcharacter/llkeyframestandmotion.h b/indra/llcharacter/llkeyframestandmotion.h
index c2634ecd6d1..e0d0fab17ab 100644
--- a/indra/llcharacter/llkeyframestandmotion.h
+++ b/indra/llcharacter/llkeyframestandmotion.h
@@ -37,7 +37,7 @@
 //-----------------------------------------------------------------------------
 // class LLKeyframeStandMotion
 //-----------------------------------------------------------------------------
-class LLKeyframeStandMotion :
+class LLKeyframeStandMotion final :
 	public LLKeyframeMotion
 {
 public:
diff --git a/indra/llcharacter/llkeyframewalkmotion.h b/indra/llcharacter/llkeyframewalkmotion.h
index 0e8d21b7652..99004814004 100644
--- a/indra/llcharacter/llkeyframewalkmotion.h
+++ b/indra/llcharacter/llkeyframewalkmotion.h
@@ -40,7 +40,7 @@
 //-----------------------------------------------------------------------------
 // class LLKeyframeWalkMotion
 //-----------------------------------------------------------------------------
-class LLKeyframeWalkMotion :
+class LLKeyframeWalkMotion final :
 	public LLKeyframeMotion
 {
 	friend class LLWalkAdjustMotion;
@@ -80,7 +80,7 @@ class LLKeyframeWalkMotion :
 	S32			mDownFoot;
 };
 
-class LLWalkAdjustMotion : public LLMotion
+class LLWalkAdjustMotion final : public LLMotion
 {
 public:
 	// Constructor
@@ -130,7 +130,7 @@ class LLWalkAdjustMotion : public LLMotion
 	F32				mAnkleOffset;
 };
 
-class LLFlyAdjustMotion : public LLMotion
+class LLFlyAdjustMotion final : public LLMotion
 {
 public:
 	// Constructor
diff --git a/indra/llcharacter/llmotion.h b/indra/llcharacter/llmotion.h
index 2dfc3afc7f0..4efc6c6990d 100644
--- a/indra/llcharacter/llmotion.h
+++ b/indra/llcharacter/llmotion.h
@@ -190,7 +190,7 @@ class LLMotion
 //-----------------------------------------------------------------------------
 // LLTestMotion
 //-----------------------------------------------------------------------------
-class LLTestMotion : public LLMotion
+class LLTestMotion final : public LLMotion
 {
 public:
 	LLTestMotion(const LLUUID &id) : LLMotion(id){}
@@ -214,7 +214,7 @@ class LLTestMotion : public LLMotion
 //-----------------------------------------------------------------------------
 // LLNullMotion
 //-----------------------------------------------------------------------------
-class LLNullMotion : public LLMotion
+class LLNullMotion final : public LLMotion
 {
 public:
 	LLNullMotion(const LLUUID &id) : LLMotion(id) {}
diff --git a/indra/llcharacter/llpose.cpp b/indra/llcharacter/llpose.cpp
index 20687e169a3..e08176c08b7 100644
--- a/indra/llcharacter/llpose.cpp
+++ b/indra/llcharacter/llpose.cpp
@@ -187,11 +187,6 @@ LLJointStateBlender::LLJointStateBlender()
 	}
 }
 
-LLJointStateBlender::~LLJointStateBlender()
-{
-	
-}
-
 //-----------------------------------------------------------------------------
 // addJointState()
 //-----------------------------------------------------------------------------
diff --git a/indra/llcharacter/llpose.h b/indra/llcharacter/llpose.h
index 886923da37b..fdb7158a5eb 100644
--- a/indra/llcharacter/llpose.h
+++ b/indra/llcharacter/llpose.h
@@ -90,7 +90,7 @@ class LLJointStateBlender
 	BOOL			mAdditiveBlends[JSB_NUM_JOINT_STATES];
 public:
 	LLJointStateBlender();
-	~LLJointStateBlender();
+	~LLJointStateBlender() = default;
 	void blendJointStates(BOOL apply_now = TRUE);
 	BOOL addJointState(const LLPointer<LLJointState>& joint_state, S32 priority, BOOL additive_blend);
 	void interpolate(F32 u);
diff --git a/indra/llcharacter/llstatemachine.h b/indra/llcharacter/llstatemachine.h
index a2f7e59bd2b..ebfdbc462b8 100644
--- a/indra/llcharacter/llstatemachine.h
+++ b/indra/llcharacter/llstatemachine.h
@@ -41,18 +41,18 @@ class LLUniqueID
 	U32			mId;
 public:
 	LLUniqueID(){mId = sNextID++;}
-	virtual ~LLUniqueID(){}
+	virtual ~LLUniqueID() = default;
 	U32		getID() {return mId;}
 };
 
-class LLFSMTransition : public LLUniqueID
+class LLFSMTransition final : public LLUniqueID
 {
 public:
 	LLFSMTransition() : LLUniqueID(){};
 	virtual std::string getName()const { return "unnamed"; }
 };
 
-class LLFSMState : public LLUniqueID
+class LLFSMState final : public LLUniqueID
 {
 public:
 	LLFSMState() : LLUniqueID(){};
diff --git a/indra/llcharacter/lltargetingmotion.h b/indra/llcharacter/lltargetingmotion.h
index 0971417e1ef..accc5a41356 100644
--- a/indra/llcharacter/lltargetingmotion.h
+++ b/indra/llcharacter/lltargetingmotion.h
@@ -41,7 +41,7 @@
 //-----------------------------------------------------------------------------
 // class LLTargetingMotion
 //-----------------------------------------------------------------------------
-class LLTargetingMotion :
+class LLTargetingMotion final :
 	public LLMotion
 {
 public:
diff --git a/indra/llmessage/llbuffer.h b/indra/llmessage/llbuffer.h
index ccdb9fa7ee9..7617adb6631 100644
--- a/indra/llmessage/llbuffer.h
+++ b/indra/llmessage/llbuffer.h
@@ -140,7 +140,7 @@ class LLBuffer
 	 * @brief The buffer base class should have no responsibilities
 	 * other than an interface.
 	 */ 
-	virtual ~LLBuffer() {}
+	virtual ~LLBuffer() = default;
 
 	/** 
 	 * @brief Generate a segment for this buffer.
diff --git a/indra/llmessage/lldatapacker.h b/indra/llmessage/lldatapacker.h
index 5140f56c015..fa455a9300c 100644
--- a/indra/llmessage/lldatapacker.h
+++ b/indra/llmessage/lldatapacker.h
@@ -37,7 +37,7 @@ class LLUUID;
 class LLDataPacker
 {
 public:
-	virtual ~LLDataPacker() {}
+	virtual ~LLDataPacker() = default;
 	
 	// Not required to override, but error to call?
 	virtual void		reset();
@@ -103,7 +103,7 @@ class LLDataPacker
 	BOOL mWriteEnabled; // disable this to do things like determine filesize without actually copying data
 };
 
-class LLDataPackerBinaryBuffer : public LLDataPacker
+class LLDataPackerBinaryBuffer final : public LLDataPacker
 {
 public:
 	LLDataPackerBinaryBuffer(U8 *bufferp, S32 size)
@@ -208,7 +208,7 @@ inline BOOL LLDataPackerBinaryBuffer::verifyLength(const S32 data_size, const ch
 	return TRUE;
 }
 
-class LLDataPackerAsciiBuffer : public LLDataPacker
+class LLDataPackerAsciiBuffer final : public LLDataPacker
 {
 public:
 	LLDataPackerAsciiBuffer(char* bufferp, S32 size)
@@ -329,7 +329,7 @@ inline BOOL LLDataPackerAsciiBuffer::verifyLength(const S32 data_size, const cha
 	return TRUE;
 }
 
-class LLDataPackerAsciiFile : public LLDataPacker
+class LLDataPackerAsciiFile final : public LLDataPacker
 {
 public:
 	LLDataPackerAsciiFile(LLFILE *fp, const S32 indent = 2)
diff --git a/indra/llmessage/llhttpnode.cpp b/indra/llmessage/llhttpnode.cpp
index 612c947a596..8b8dfde030d 100644
--- a/indra/llmessage/llhttpnode.cpp
+++ b/indra/llmessage/llhttpnode.cpp
@@ -471,10 +471,6 @@ LLPointer<LLSimpleResponse> LLSimpleResponse::create()
 	return new LLSimpleResponse();
 }
 
-LLSimpleResponse::~LLSimpleResponse()
-{
-}
-
 void LLSimpleResponse::result(const LLSD& result)
 {
 	status(HTTP_OK, "OK");
diff --git a/indra/llmessage/llhttpnode.h b/indra/llmessage/llhttpnode.h
index 1144d88be16..8c5c8927355 100644
--- a/indra/llmessage/llhttpnode.h
+++ b/indra/llmessage/llhttpnode.h
@@ -298,7 +298,7 @@ class LLHTTPNode
 
 
 
-class LLSimpleResponse : public LLHTTPNode::Response
+class LLSimpleResponse final : public LLHTTPNode::Response
 {
 public:
 	static LLPointer<LLSimpleResponse> create();
@@ -314,7 +314,7 @@ class LLSimpleResponse : public LLHTTPNode::Response
 	std::string mMessage;
 
 protected:
-	~LLSimpleResponse();
+	~LLSimpleResponse() = default;
 
 private:
         LLSimpleResponse() : mCode(0) {} // Must be accessed through LLPointer.
diff --git a/indra/llmessage/llhttpnodeadapter.h b/indra/llmessage/llhttpnodeadapter.h
index 22984c4478c..05672f199c4 100644
--- a/indra/llmessage/llhttpnodeadapter.h
+++ b/indra/llmessage/llhttpnodeadapter.h
@@ -30,7 +30,7 @@
 #include "llhttpnode.h"
 
 template<typename T>
-class LLHTTPNodeAdapter : public LLHTTPNode
+class LLHTTPNodeAdapter final : public LLHTTPNode
 {
 public:
 
diff --git a/indra/llmessage/llmessagetemplate.h b/indra/llmessage/llmessagetemplate.h
index a44e16fc3ae..2a1a7072c7c 100644
--- a/indra/llmessage/llmessagetemplate.h
+++ b/indra/llmessage/llmessagetemplate.h
@@ -43,11 +43,8 @@ class LLMsgVarData
 		mName = (char *)name; 
 	}
 
-	~LLMsgVarData() 
-	{
-		// copy constructor just copies the mData pointer, so only delete mData explicitly
-	}
-	
+	~LLMsgVarData() = default; // copy constructor just copies the mData pointer, so only delete mData explicitly
+
 	void deleteData() 
 	{
 		delete[] mData;
diff --git a/indra/llmessage/llmessagethrottle.cpp b/indra/llmessage/llmessagethrottle.cpp
index 98ae834b0d8..b738838a25e 100644
--- a/indra/llmessage/llmessagethrottle.cpp
+++ b/indra/llmessage/llmessagethrottle.cpp
@@ -44,14 +44,6 @@ const U64 MAX_MESSAGE_AGE[MTC_EOF] =
 	10 * SEC_TO_USEC	// MTC_AGENT_ALERT
 };
 
-LLMessageThrottle::LLMessageThrottle()
-{
-}
-
-LLMessageThrottle::~LLMessageThrottle()
-{
-}
-
 void LLMessageThrottle::pruneEntries()
 {
 	// Go through each message category, and prune entries older than max age.
diff --git a/indra/llmessage/llmessagethrottle.h b/indra/llmessage/llmessagethrottle.h
index 4ea84f712aa..a18639f86f9 100644
--- a/indra/llmessage/llmessagethrottle.h
+++ b/indra/llmessage/llmessagethrottle.h
@@ -56,8 +56,8 @@ class LLMessageThrottleEntry
 class LLMessageThrottle
 {
 public:
-	LLMessageThrottle();
-	~LLMessageThrottle();
+	LLMessageThrottle() = default;
+	~LLMessageThrottle() = default;
 
 	BOOL addViewerAlert	(const LLUUID& to, const std::string& mesg);
 	BOOL addAgentAlert	(const LLUUID& agent, const LLUUID& task, const std::string& mesg);
diff --git a/indra/llmessage/llnullcipher.h b/indra/llmessage/llnullcipher.h
index a9f9a1ce037..011c6624c39 100644
--- a/indra/llmessage/llnullcipher.h
+++ b/indra/llmessage/llnullcipher.h
@@ -38,8 +38,8 @@
 class LLNullCipher : public LLCipher
 {
 public:
-	LLNullCipher() {}
-	virtual ~LLNullCipher() {}
+	LLNullCipher() = default;
+	virtual ~LLNullCipher() = default;
 	virtual U32 encrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len);
 	virtual U32 decrypt(const U8* src, U32 src_len, U8* dst, U32 dst_len);
 	virtual U32 requiredEncryptionSpace(U32 src_len) const;
diff --git a/indra/llmessage/llpacketack.h b/indra/llmessage/llpacketack.h
index f0ed923f193..997b1e81f3a 100644
--- a/indra/llmessage/llpacketack.h
+++ b/indra/llmessage/llpacketack.h
@@ -47,7 +47,7 @@ class LLReliablePacketParams
 		clear();
 	};
 
-	~LLReliablePacketParams() { };
+	~LLReliablePacketParams() = default;
 
 	void clear()
 	{
diff --git a/indra/llmessage/llpacketbuffer.cpp b/indra/llmessage/llpacketbuffer.cpp
index ccf991b1a73..94bac721313 100644
--- a/indra/llmessage/llpacketbuffer.cpp
+++ b/indra/llmessage/llpacketbuffer.cpp
@@ -61,12 +61,6 @@ LLPacketBuffer::LLPacketBuffer (S32 hSocket)
 
 ///////////////////////////////////////////////////////////
 
-LLPacketBuffer::~LLPacketBuffer ()
-{
-}
-
-///////////////////////////////////////////////////////////
-
 void LLPacketBuffer::init (S32 hSocket)
 {
 	mSize = receive_packet(hSocket, mData);
diff --git a/indra/llmessage/llpacketbuffer.h b/indra/llmessage/llpacketbuffer.h
index 14b6f9d5d22..53000094d7d 100644
--- a/indra/llmessage/llpacketbuffer.h
+++ b/indra/llmessage/llpacketbuffer.h
@@ -36,7 +36,7 @@ class LLPacketBuffer
 public:
 	LLPacketBuffer(const LLHost &host, const char *datap, const S32 size);
 	LLPacketBuffer(S32 hSocket);           // receive a packet
-	~LLPacketBuffer();
+	~LLPacketBuffer() = default;
 
 	S32			getSize() const					{ return mSize; }
 	const char	*getData() const				{ return mData; }
diff --git a/indra/llmessage/llsdmessagereader.h b/indra/llmessage/llsdmessagereader.h
index 3b3d7fbfbe7..65125468cf0 100644
--- a/indra/llmessage/llsdmessagereader.h
+++ b/indra/llmessage/llsdmessagereader.h
@@ -35,7 +35,7 @@
 class LLMessageTemplate;
 class LLMsgData;
 
-class LLSDMessageReader : public LLMessageReader
+class LLSDMessageReader final : public LLMessageReader
 {
 public:
 
diff --git a/indra/llmessage/lltemplatemessagereader.h b/indra/llmessage/lltemplatemessagereader.h
index fcf8f92fa6a..3e5162d43a8 100644
--- a/indra/llmessage/lltemplatemessagereader.h
+++ b/indra/llmessage/lltemplatemessagereader.h
@@ -34,7 +34,7 @@
 class LLMessageTemplate;
 class LLMsgData;
 
-class LLTemplateMessageReader : public LLMessageReader
+class LLTemplateMessageReader final : public LLMessageReader
 {
 public:
 
diff --git a/indra/llmessage/llthrottle.h b/indra/llmessage/llthrottle.h
index e43e54f61b2..46dfd2ca43b 100644
--- a/indra/llmessage/llthrottle.h
+++ b/indra/llmessage/llthrottle.h
@@ -38,7 +38,7 @@ class LLThrottle
 {
 public:
 	LLThrottle(const F32 throttle = 1.f);
-	~LLThrottle() { }
+	~LLThrottle() = default;
 
 	void setRate(const F32 rate);
 	BOOL checkOverflow(const F32 amount); // I'm about to add an amount, TRUE if would overflow throttle
@@ -70,7 +70,7 @@ class LLThrottleGroup
 {
 public:
 	LLThrottleGroup();
-	~LLThrottleGroup() { }
+	~LLThrottleGroup() = default;
 
 	void	resetDynamicAdjust();
 	BOOL	checkOverflow(S32 throttle_cat, F32 bits);		// I'm about to send bits, TRUE if would overflow channel
diff --git a/indra/llmessage/machine.h b/indra/llmessage/machine.h
index 07aadd47d2e..0630b676c32 100644
--- a/indra/llmessage/machine.h
+++ b/indra/llmessage/machine.h
@@ -55,7 +55,7 @@ class LLMachine
 	LLMachine(EMachineType machine_type, const LLHost &host) 
 		: mMachineType(machine_type) {mHost = host; mControlPort = 0;}
 
-	~LLMachine()	{}
+	~LLMachine() = default;
 
 	// get functions
 	EMachineType	getMachineType()	const { return mMachineType; }
diff --git a/indra/llmessage/partsyspacket.cpp b/indra/llmessage/partsyspacket.cpp
index d87de38aa52..41714725adc 100644
--- a/indra/llmessage/partsyspacket.cpp
+++ b/indra/llmessage/partsyspacket.cpp
@@ -143,11 +143,6 @@ LLPartSysCompressedPacket::LLPartSysCompressedPacket()
 	gSetInitDataDefaults(&mDefaults);
 }
 
-LLPartSysCompressedPacket::~LLPartSysCompressedPacket()
-{
-	// no dynamic data is stored by this class, do nothing.
-}
-
 void LLPartSysCompressedPacket::writeFlagByte(LLPartInitData *in)
 {
 		mData[0] =  mData[1] = mData[2] = '\0';
diff --git a/indra/llmessage/partsyspacket.h b/indra/llmessage/partsyspacket.h
index d9abecea3f9..21b9595f893 100644
--- a/indra/llmessage/partsyspacket.h
+++ b/indra/llmessage/partsyspacket.h
@@ -201,7 +201,7 @@ class LLPartSysCompressedPacket
 {
 public:
 	LLPartSysCompressedPacket();
-	~LLPartSysCompressedPacket();
+	~LLPartSysCompressedPacket() = default;
 	BOOL	fromLLPartInitData(LLPartInitData *in, U32 &bytesUsed);
 	BOOL	toLLPartInitData(LLPartInitData *out, U32 *bytesUsed);
 	BOOL	fromUnsignedBytes(U8 *in, U32 bytesUsed);
diff --git a/indra/llprimitive/lldaeloader.h b/indra/llprimitive/lldaeloader.h
index 4e990dbe5e5..9735880df1e 100644
--- a/indra/llprimitive/lldaeloader.h
+++ b/indra/llprimitive/lldaeloader.h
@@ -39,7 +39,7 @@ class domController;
 class domSkin;
 class domMesh;
 
-class LLDAELoader : public LLModelLoader
+class LLDAELoader final : public LLModelLoader
 {
 public:
 	typedef std::map<std::string, LLImportMaterial>							material_map;
diff --git a/indra/llprimitive/llmaterial.h b/indra/llprimitive/llmaterial.h
index d58b7ee8127..83c86c81d55 100644
--- a/indra/llprimitive/llmaterial.h
+++ b/indra/llprimitive/llmaterial.h
@@ -35,7 +35,7 @@
 #include "llpointer.h"
 #include "llrefcount.h"
 
-class LLMaterial : public LLRefCount
+class LLMaterial final : public LLRefCount
 {
 public:
 
diff --git a/indra/llprimitive/llmaterialtable.h b/indra/llprimitive/llmaterialtable.h
index a17e0103ff8..9c4c6d88b64 100644
--- a/indra/llprimitive/llmaterialtable.h
+++ b/indra/llprimitive/llmaterialtable.h
@@ -178,9 +178,7 @@ class LLMaterialInfo
 		mDefaultTextureID = uuid;		
 	};
 
-	~LLMaterialInfo()
-	{
-	};
+	~LLMaterialInfo() = default;
 
 };
 
diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h
index 51fa2f8079c..86910f7e21d 100644
--- a/indra/llprimitive/llmodel.h
+++ b/indra/llprimitive/llmodel.h
@@ -59,7 +59,7 @@ class LLMeshSkinInfo
     bool mJointNumsInitialized;
 };
 
-class LLModel : public LLVolume
+class LLModel final : public LLVolume
 {
 public:
 
@@ -107,7 +107,7 @@ class LLModel : public LLVolume
 	class Decomposition
 	{
 	public:
-		Decomposition() { }
+		Decomposition() = default;
 		Decomposition(LLSD& data);
 		void fromLLSD(LLSD& data);
 		LLSD asLLSD() const;
@@ -303,7 +303,7 @@ class LLModelMaterialBase
 	}
 };
 
-class LLImportMaterial : public LLModelMaterialBase
+class LLImportMaterial final : public LLModelMaterialBase
 {
 public:
     friend class LLMeshUploadThread;
@@ -358,7 +358,7 @@ class LLModelInstanceBase
 
 typedef std::vector<LLModelInstanceBase> model_instance_list;
 
-class LLModelInstance : public LLModelInstanceBase
+class LLModelInstance final : public LLModelInstanceBase
 {
 public:
 	std::string mLabel;
diff --git a/indra/llprimitive/llprimitive.h b/indra/llprimitive/llprimitive.h
index b1f81122230..b5ad6857725 100644
--- a/indra/llprimitive/llprimitive.h
+++ b/indra/llprimitive/llprimitive.h
@@ -111,7 +111,7 @@ class LLNetworkData
 	
 public:
 	U16 mType;
-	virtual ~LLNetworkData() {};
+	virtual ~LLNetworkData() = default;
 	virtual BOOL pack(LLDataPacker &dp) const = 0;
 	virtual BOOL unpack(LLDataPacker &dp) = 0;
 	virtual bool operator==(const LLNetworkData& data) const = 0;
@@ -129,7 +129,7 @@ extern const F32 LIGHT_MIN_CUTOFF;
 extern const F32 LIGHT_DEFAULT_CUTOFF;
 extern const F32 LIGHT_MAX_CUTOFF;
 
-class LLLightParams : public LLNetworkData
+class LLLightParams final : public LLNetworkData
 {
 private:
 	LLColor4 mColor; // linear color (not gamma corrected), alpha = intensity
@@ -213,7 +213,7 @@ extern const BOOL FLEXIBLE_OBJECT_DEFAULT_USING_COLLISION_SPHERE;
 extern const BOOL FLEXIBLE_OBJECT_DEFAULT_RENDERING_COLLISION_SPHERE;
 
 
-class LLFlexibleObjectData : public LLNetworkData
+class LLFlexibleObjectData final : public LLNetworkData
 {
 protected:
 	S32			mSimulateLOD;		// 2^n = number of simulated sections
@@ -253,7 +253,7 @@ class LLFlexibleObjectData : public LLNetworkData
 
 
 
-class LLSculptParams : public LLNetworkData
+class LLSculptParams final : public LLNetworkData
 {
 protected:
 	LLUUID mSculptTexture;
@@ -274,7 +274,7 @@ class LLSculptParams : public LLNetworkData
 	U8 getSculptType() const                { return mSculptType; }
 };
 
-class LLLightImageParams : public LLNetworkData
+class LLLightImageParams final : public LLNetworkData
 {
 protected:
 	LLUUID mLightTexture;
@@ -298,7 +298,7 @@ class LLLightImageParams : public LLNetworkData
 	
 };
 
-class LLExtendedMeshParams : public LLNetworkData
+class LLExtendedMeshParams final : public LLNetworkData
 {
 protected:
 	U32 mFlags;
diff --git a/indra/llprimitive/llprimtexturelist.h b/indra/llprimitive/llprimtexturelist.h
index 49c636e40f1..5718ec2fb78 100644
--- a/indra/llprimitive/llprimtexturelist.h
+++ b/indra/llprimitive/llprimtexturelist.h
@@ -118,10 +118,7 @@ class LLPrimTextureList
 protected:
 	texture_list_t mEntryList;
 private:
-	LLPrimTextureList(const LLPrimTextureList& other_list)
-	{
-		// private so that it can't be used
-	}
+	LLPrimTextureList(const LLPrimTextureList& other_list) = delete;
 };
 
 #endif
diff --git a/indra/llprimitive/lltextureanim.cpp b/indra/llprimitive/lltextureanim.cpp
index 7c48e57a1a1..84b0fa4b02e 100644
--- a/indra/llprimitive/lltextureanim.cpp
+++ b/indra/llprimitive/lltextureanim.cpp
@@ -37,12 +37,6 @@ LLTextureAnim::LLTextureAnim()
 	reset();
 }
 
-
-LLTextureAnim::~LLTextureAnim()
-{
-}
-
-
 void LLTextureAnim::reset()
 {
 	mMode = 0;
diff --git a/indra/llprimitive/lltextureanim.h b/indra/llprimitive/lltextureanim.h
index f0d9f9df5cc..4d0cd43ee1c 100644
--- a/indra/llprimitive/lltextureanim.h
+++ b/indra/llprimitive/lltextureanim.h
@@ -37,7 +37,7 @@ class LLTextureAnim
 {
 public:
 	LLTextureAnim();
-	virtual ~LLTextureAnim();
+	virtual ~LLTextureAnim() = default;
 
 	virtual void reset();
 	void packTAMessage(LLMessageSystem *mesgsys) const;
diff --git a/indra/llprimitive/lltreeparams.cpp b/indra/llprimitive/lltreeparams.cpp
index 19a6db20ae5..86442288ee6 100644
--- a/indra/llprimitive/lltreeparams.cpp
+++ b/indra/llprimitive/lltreeparams.cpp
@@ -165,12 +165,7 @@ LLTreeParams::LLTreeParams()
 	mLeafQuality = 1.25;
 }
 
-LLTreeParams::~LLTreeParams()
-{
-
-}
-
-F32 LLTreeParams::ShapeRatio(EShapeRatio shape, F32 ratio) 
+F32 LLTreeParams::ShapeRatio(EShapeRatio shape, F32 ratio)
 {
 	switch (shape) {
 		case (SR_CONICAL): 
diff --git a/indra/llprimitive/lltreeparams.h b/indra/llprimitive/lltreeparams.h
index 6e2b47c0e96..94f83071902 100644
--- a/indra/llprimitive/lltreeparams.h
+++ b/indra/llprimitive/lltreeparams.h
@@ -42,7 +42,7 @@ class LLTreeParams
 {
 public:
 	LLTreeParams();
-	virtual ~LLTreeParams();
+	virtual ~LLTreeParams() = default;
 
 	static F32 ShapeRatio(EShapeRatio shape, F32 ratio);
 
diff --git a/indra/llvfs/lldir_linux.cpp b/indra/llvfs/lldir_linux.cpp
index 528af3964c5..c0bd142596d 100644
--- a/indra/llvfs/lldir_linux.cpp
+++ b/indra/llvfs/lldir_linux.cpp
@@ -139,10 +139,6 @@ LLDir_Linux::LLDir_Linux()
 	mTempDir = "/tmp";
 }
 
-LLDir_Linux::~LLDir_Linux()
-{
-}
-
 // Implementation
 
 
diff --git a/indra/llvfs/lldir_linux.h b/indra/llvfs/lldir_linux.h
index e83a020ba4d..d6be5c6ceee 100644
--- a/indra/llvfs/lldir_linux.h
+++ b/indra/llvfs/lldir_linux.h
@@ -36,11 +36,11 @@
 #include <dirent.h>
 #include <errno.h>
 
-class LLDir_Linux : public LLDir
+class LLDir_Linux final : public LLDir
 {
 public:
 	LLDir_Linux();
-	virtual ~LLDir_Linux();
+	virtual ~LLDir_Linux() = default;
 
 	/*virtual*/ void initAppDirs(const std::string &app_name,
 		const std::string& app_read_only_data_dir);
diff --git a/indra/llvfs/lldir_mac.h b/indra/llvfs/lldir_mac.h
index 558727ebbc0..8806a9c2822 100644
--- a/indra/llvfs/lldir_mac.h
+++ b/indra/llvfs/lldir_mac.h
@@ -35,7 +35,7 @@
 
 #include <dirent.h>
 
-class LLDir_Mac : public LLDir
+class LLDir_Mac final : public LLDir
 {
 public:
 	LLDir_Mac();
diff --git a/indra/llvfs/lldir_win32.h b/indra/llvfs/lldir_win32.h
index 450efaf9da4..37f78ab281c 100644
--- a/indra/llvfs/lldir_win32.h
+++ b/indra/llvfs/lldir_win32.h
@@ -33,7 +33,7 @@
 
 #include "lldir.h"
 
-class LLDir_Win32 : public LLDir
+class LLDir_Win32 final : public LLDir
 {
 public:
 	LLDir_Win32();
diff --git a/indra/llvfs/lldiriterator.cpp b/indra/llvfs/lldiriterator.cpp
index 8c2c622ea00..cbd67afaef0 100644
--- a/indra/llvfs/lldiriterator.cpp
+++ b/indra/llvfs/lldiriterator.cpp
@@ -38,7 +38,7 @@ class LLDirIterator::Impl
 {
 public:
 	Impl(const std::string &dirname, const std::string &mask);
-	~Impl();
+	~Impl() = default;
 
 	bool next(std::string &fname);
 
@@ -107,10 +107,6 @@ LLDirIterator::Impl::Impl(const std::string &dirname, const std::string &mask)
 	mIsValid = true;
 }
 
-LLDirIterator::Impl::~Impl()
-{
-}
-
 bool LLDirIterator::Impl::next(std::string &fname)
 {
 	fname = "";
diff --git a/indra/llwindow/llkeyboardsdl.h b/indra/llwindow/llkeyboardsdl.h
index 7d2304a46b7..b156ae33f0b 100644
--- a/indra/llwindow/llkeyboardsdl.h
+++ b/indra/llwindow/llkeyboardsdl.h
@@ -30,7 +30,7 @@
 #include "llkeyboard.h"
 #include <SDL.h>
 
-class LLKeyboardSDL : public LLKeyboard
+class LLKeyboardSDL final : public LLKeyboard
 {
 public:
 	LLKeyboardSDL();
diff --git a/indra/llwindow/llwindowsdl.h b/indra/llwindow/llwindowsdl.h
index d4f7ae1510a..e293707dda7 100644
--- a/indra/llwindow/llwindowsdl.h
+++ b/indra/llwindow/llwindowsdl.h
@@ -50,7 +50,7 @@
 #undef require
 
 
-class LLWindowSDL : public LLWindow
+class LLWindowSDL final : public LLWindow
 {
 public:
 	/*virtual*/ void show();
diff --git a/indra/llxml/llcontrol.h b/indra/llxml/llcontrol.h
index 54f90b6a741..138a8880fc1 100644
--- a/indra/llxml/llcontrol.h
+++ b/indra/llxml/llcontrol.h
@@ -90,7 +90,7 @@ typedef enum e_control_type
 	TYPE_COUNT
 } eControlType;
 
-class LLControlVariable : public LLRefCount
+class LLControlVariable final : public LLRefCount
 {
 	LOG_CLASS(LLControlVariable);
 
@@ -187,7 +187,7 @@ T convert_from_llsd(const LLSD& sd, eControlType type, const std::string& contro
 }
 
 //const U32 STRING_CACHE_SIZE = 10000;
-class LLControlGroup : public LLInstanceTracker<LLControlGroup, std::string>
+class LLControlGroup final : public LLInstanceTracker<LLControlGroup, std::string>
 {
 	LOG_CLASS(LLControlGroup);
 
@@ -326,7 +326,7 @@ class LLControlGroup : public LLInstanceTracker<LLControlGroup, std::string>
 //! without have to manually create and bind a listener to a local
 //! object.
 template <class T>
-class LLControlCache : public LLRefCount, public LLInstanceTracker<LLControlCache<T>, std::string>
+class LLControlCache final : public LLRefCount, public LLInstanceTracker<LLControlCache<T>, std::string>
 {
 public:
 	// This constructor will declare a control if it doesn't exist in the contol group
diff --git a/indra/newview/llbreastmotion.h b/indra/newview/llbreastmotion.h
index aa0fdf9f8b1..be4f54bc889 100644
--- a/indra/newview/llbreastmotion.h
+++ b/indra/newview/llbreastmotion.h
@@ -41,7 +41,7 @@ class LLViewerVisualParam;
 //-----------------------------------------------------------------------------
 // class LLBreastMotion
 //-----------------------------------------------------------------------------
-class LLBreastMotion :
+class LLBreastMotion final :
 	public LLMotion
 {
 public:
diff --git a/indra/newview/llcolorswatch.h b/indra/newview/llcolorswatch.h
index 380fdccfa37..1c3cb12c86c 100644
--- a/indra/newview/llcolorswatch.h
+++ b/indra/newview/llcolorswatch.h
@@ -38,7 +38,7 @@
 class LLColor4;
 class LLFloaterColorPicker;
 
-class LLColorSwatchCtrl
+class LLColorSwatchCtrl final
 : public LLUICtrl
 {
 public:
diff --git a/indra/newview/llemote.h b/indra/newview/llemote.h
index 4c516998dc6..99f3ac91bfd 100644
--- a/indra/newview/llemote.h
+++ b/indra/newview/llemote.h
@@ -44,7 +44,7 @@ class LLVisualParam;
 //-----------------------------------------------------------------------------
 // class LLEmote
 //-----------------------------------------------------------------------------
-class LLEmote :
+class LLEmote final :
 	public LLMotion
 {
 public:
diff --git a/indra/newview/llexpandabletextbox.h b/indra/newview/llexpandabletextbox.h
index aaf393277f0..f80564fb1d6 100644
--- a/indra/newview/llexpandabletextbox.h
+++ b/indra/newview/llexpandabletextbox.h
@@ -35,7 +35,7 @@
  * if text doesn't fit into text box. After pressing "More" the text box will expand to show
  * all text. If text is still too big, a scroll bar will appear inside expanded text box.
  */
-class LLExpandableTextBox : public LLUICtrl
+class LLExpandableTextBox final : public LLUICtrl
 {
 protected:
 
diff --git a/indra/newview/llgroupiconctrl.h b/indra/newview/llgroupiconctrl.h
index 43e384d3e27..120ca07165c 100644
--- a/indra/newview/llgroupiconctrl.h
+++ b/indra/newview/llgroupiconctrl.h
@@ -37,7 +37,7 @@
  * It gets icon id by group id from the LLGroupMgr.
  * If group data is not loaded yet it subscribes as LLGroupMgr observer and requests necessary data.
  */
-class LLGroupIconCtrl
+class LLGroupIconCtrl final
 	: public LLIconCtrl, public LLGroupMgrObserver
 {
 public:
diff --git a/indra/newview/llgrouplist.h b/indra/newview/llgrouplist.h
index 063b50f5c50..ce7e74c2944 100644
--- a/indra/newview/llgrouplist.h
+++ b/indra/newview/llgrouplist.h
@@ -44,7 +44,7 @@
  * 
  * @see setNameFilter()
  */
-class LLGroupList: public LLFlatListViewEx, public LLOldEvents::LLSimpleListener
+class LLGroupList final : public LLFlatListViewEx, public LLOldEvents::LLSimpleListener
 {
 	LOG_CLASS(LLGroupList);
 public:
diff --git a/indra/newview/llhttpretrypolicy.h b/indra/newview/llhttpretrypolicy.h
index d71e114c5dd..d5bb957f4fc 100644
--- a/indra/newview/llhttpretrypolicy.h
+++ b/indra/newview/llhttpretrypolicy.h
@@ -41,9 +41,9 @@
 class LLHTTPRetryPolicy: public LLThreadSafeRefCount
 {
 public:
-	LLHTTPRetryPolicy() {}
+	LLHTTPRetryPolicy() = default;
 
-	virtual ~LLHTTPRetryPolicy() {}
+	virtual ~LLHTTPRetryPolicy() = default;
 	// Call after a sucess to reset retry state.
 
 	virtual void onSuccess() = 0;
@@ -62,7 +62,7 @@ class LLHTTPRetryPolicy: public LLThreadSafeRefCount
 
 // Very general policy with geometric back-off after failures,
 // up to a maximum delay, and maximum number of retries.
-class LLAdaptiveRetryPolicy: public LLHTTPRetryPolicy
+class LLAdaptiveRetryPolicy final : public LLHTTPRetryPolicy
 {
 public:
 	LLAdaptiveRetryPolicy(F32 min_delay, F32 max_delay, F32 backoff_factor, U32 max_retries, bool retry_on_4xx = false);
diff --git a/indra/newview/llhudicon.h b/indra/newview/llhudicon.h
index e00a985ddc0..eaa19ad3618 100644
--- a/indra/newview/llhudicon.h
+++ b/indra/newview/llhudicon.h
@@ -42,7 +42,7 @@
 // Renders a 2D icon billboard floating at the location specified.
 class LLViewerTexture;
 
-class LLHUDIcon : public LLHUDObject
+class LLHUDIcon final : public LLHUDObject
 {
 friend class LLHUDObject;
 
diff --git a/indra/newview/llhudnametag.h b/indra/newview/llhudnametag.h
index 38a4f184153..98f957a09ad 100644
--- a/indra/newview/llhudnametag.h
+++ b/indra/newview/llhudnametag.h
@@ -48,7 +48,7 @@ struct llhudnametag_further_away
 	bool operator()(const LLPointer<LLHUDNameTag>& lhs, const LLPointer<LLHUDNameTag>& rhs) const;
 };
 
-class LLHUDNameTag : public LLHUDObject
+class LLHUDNameTag final : public LLHUDObject
 {
 protected:
 	class LLHUDTextSegment
diff --git a/indra/newview/llhudtext.h b/indra/newview/llhudtext.h
index 0be9eb4f2e9..1a548cf9de7 100644
--- a/indra/newview/llhudtext.h
+++ b/indra/newview/llhudtext.h
@@ -47,7 +47,7 @@ struct lltextobject_further_away
 	bool operator()(const LLPointer<LLHUDText>& lhs, const LLPointer<LLHUDText>& rhs) const;
 };
 
-class LLHUDText : public LLHUDObject
+class LLHUDText final : public LLHUDObject
 {
 protected:
 	class LLHUDTextSegment
diff --git a/indra/newview/llmediactrl.h b/indra/newview/llmediactrl.h
index 865818de06f..2cb98b2fada 100644
--- a/indra/newview/llmediactrl.h
+++ b/indra/newview/llmediactrl.h
@@ -38,7 +38,7 @@ class LLContextMenu;
 
 ////////////////////////////////////////////////////////////////////////////////
 //
-class LLMediaCtrl :
+class LLMediaCtrl final :
 	public LLPanel,
 	public LLViewerMediaObserver,
 	public LLViewerMediaEventEmitter,
diff --git a/indra/newview/llphysicsmotion.h b/indra/newview/llphysicsmotion.h
index b246fa99bb5..593128308f5 100644
--- a/indra/newview/llphysicsmotion.h
+++ b/indra/newview/llphysicsmotion.h
@@ -41,7 +41,7 @@ class LLPhysicsMotion;
 //-----------------------------------------------------------------------------
 // class LLPhysicsMotion
 //-----------------------------------------------------------------------------
-class LLPhysicsMotionController :
+class LLPhysicsMotionController final :
 	public LLMotion
 {
 public:
diff --git a/indra/newview/llviewerwindow.h b/indra/newview/llviewerwindow.h
index 4afe623290a..ba7e3a56553 100644
--- a/indra/newview/llviewerwindow.h
+++ b/indra/newview/llviewerwindow.h
@@ -139,7 +139,7 @@ class LLPickInfo
 
 static const U32 MAX_SNAPSHOT_IMAGE_SIZE = 6 * 1024; // max snapshot image size 6144 * 6144
 
-class LLViewerWindow : public LLWindowCallbacks
+class LLViewerWindow final : public LLWindowCallbacks
 {
 public:
 	//
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index bee264d13f7..c9c874a1424 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -258,7 +258,7 @@ struct LLAppearanceMessageContents: public LLRefCount
 //-----------------------------------------------------------------------------
 // class LLBodyNoiseMotion
 //-----------------------------------------------------------------------------
-class LLBodyNoiseMotion :
+class LLBodyNoiseMotion final :
 	public LLMotion
 {
 public:
@@ -363,7 +363,7 @@ class LLBodyNoiseMotion :
 //-----------------------------------------------------------------------------
 // class LLBreatheMotionRot
 //-----------------------------------------------------------------------------
-class LLBreatheMotionRot :
+class LLBreatheMotionRot final :
 	public LLMotion
 {
 public:
@@ -476,7 +476,7 @@ class LLBreatheMotionRot :
 //-----------------------------------------------------------------------------
 // class LLPelvisFixMotion
 //-----------------------------------------------------------------------------
-class LLPelvisFixMotion :
+class LLPelvisFixMotion final :
 	public LLMotion
 {
 public:
diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp
index 3f7d44e7477..a164344cdaa 100644
--- a/indra/newview/llvovolume.cpp
+++ b/indra/newview/llvovolume.cpp
@@ -114,7 +114,7 @@ static LLTrace::BlockTimerStatHandle FTM_VOLUME_TEXTURES("Volume Textures");
 extern BOOL gGLDebugLoggingEnabled;
 
 // Implementation class of LLMediaDataClientObject.  See llmediadataclient.h
-class LLMediaDataClientObjectImpl : public LLMediaDataClientObject
+class LLMediaDataClientObjectImpl final : public LLMediaDataClientObject
 {
 public:
 	LLMediaDataClientObjectImpl(LLVOVolume *obj, bool isNew) : mObject(obj), mNew(isNew) 
-- 
GitLab