fix address sanitizer issues

This commit is contained in:
nillerusr 2022-04-25 17:21:00 +03:00
parent 9fd47d0823
commit 660a8391ee
17 changed files with 43 additions and 37 deletions

View file

@ -893,7 +893,7 @@ CON_COMMAND_F( connect, "Connect to specified server.", FCVAR_DONTRECORD )
{ {
ConMsg( "Usage: connect <server>\n" ); ConMsg( "Usage: connect <server>\n" );
} }
vecArgs.PurgeAndDeleteElements(); vecArgs.PurgeAndDeleteElementsArray();
} }
CON_COMMAND_F( redirect, "Redirect client to specified server.", FCVAR_DONTRECORD | FCVAR_SERVER_CAN_EXECUTE ) CON_COMMAND_F( redirect, "Redirect client to specified server.", FCVAR_DONTRECORD | FCVAR_SERVER_CAN_EXECUTE )

View file

@ -2677,6 +2677,9 @@ int CM_BoxVisible( const Vector& mins, const Vector& maxs, const byte *visbi
int cluster = CM_LeafCluster( leafList[i] ); int cluster = CM_LeafCluster( leafList[i] );
int offset = cluster>>3; int offset = cluster>>3;
if( offset == -1 )
return true;
if ( offset > vissize ) if ( offset > vissize )
{ {
Sys_Error( "CM_BoxVisible: cluster %i, offset %i out of bounds %i\n", cluster, offset, vissize ); Sys_Error( "CM_BoxVisible: cluster %i, offset %i out of bounds %i\n", cluster, offset, vissize );

View file

@ -52,7 +52,7 @@ public:
{ {
if ( pData ) if ( pData )
{ {
delete pData; delete[] pData;
} }
} }
@ -65,7 +65,7 @@ public:
pSendTable = src.pSendTable; pSendTable = src.pSendTable;
pClientClass = src.pClientClass; pClientClass = src.pClientClass;
filter.AddPlayersFromFilter( &src.filter ); filter.AddPlayersFromFilter( &src.filter );
if ( src.pData ) if ( src.pData )
{ {
int size = Bits2Bytes( src.bits ); int size = Bits2Bytes( src.bits );

View file

@ -806,7 +806,8 @@ int CSaveRestore::SaveGameSlot( const char *pSaveName, const char *pSaveComment,
m_bWaitingForSafeDangerousSave = bIsAutosaveDangerous; m_bWaitingForSafeDangerousSave = bIsAutosaveDangerous;
int iHeaderBufferSize = 64 + tokenSize + pSaveData->GetCurPos(); int iHeaderBufferSize = 64 + tokenSize + pSaveData->GetCurPos();
void *pMem = malloc(iHeaderBufferSize); void *pMem = new char[iHeaderBufferSize];
CUtlBuffer saveHeader( pMem, iHeaderBufferSize ); CUtlBuffer saveHeader( pMem, iHeaderBufferSize );
// Write the header -- THIS SHOULD NEVER CHANGE STRUCTURE, USE SAVE_HEADER FOR NEW HEADER INFORMATION // Write the header -- THIS SHOULD NEVER CHANGE STRUCTURE, USE SAVE_HEADER FOR NEW HEADER INFORMATION

View file

@ -1389,7 +1389,7 @@ bool NET_GetLoopPacket ( netpacket_t * packet )
if ( loop->data != loop->defbuffer ) if ( loop->data != loop->defbuffer )
{ {
delete loop->data; delete[] loop->data;
loop->data = loop->defbuffer; loop->data = loop->defbuffer;
} }

View file

@ -2048,34 +2048,34 @@ public:
class CClipPlane class CClipPlane
{ {
public: public:
static inline bool Inside( ShadowVertex_t const& vert ) static inline bool Inside( ShadowVertex_t const& vert )
{ {
return DotProduct( vert.m_Position, *m_pNormal ) < m_Dist; return DotProduct( vert.m_Position, m_pNormal ) < m_Dist;
} }
static inline float Clip( const Vector& one, const Vector& two ) static inline float Clip( const Vector& one, const Vector& two )
{ {
Vector dir; Vector dir;
VectorSubtract( two, one, dir ); VectorSubtract( two, one, dir );
return IntersectRayWithPlane( one, dir, *m_pNormal, m_Dist ); return IntersectRayWithPlane( one, dir, m_pNormal, m_Dist );
} }
static inline bool IsAbove() {return false;} static inline bool IsAbove() {return false;}
static inline bool IsPlane() {return true;} static inline bool IsPlane() {return true;}
static void SetPlane( const Vector& normal, float dist ) static void SetPlane( const Vector normal, float dist )
{ {
m_pNormal = &normal; m_pNormal = normal;
m_Dist = dist; m_Dist = dist;
} }
private: private:
static const Vector *m_pNormal; static const Vector m_pNormal;
static float m_Dist; static float m_Dist;
}; };
const Vector *CClipPlane::m_pNormal; const Vector CClipPlane::m_pNormal;
float CClipPlane::m_Dist; float CClipPlane::m_Dist;
static inline void ClampTexCoord( ShadowVertex_t *pInVertex, ShadowVertex_t *pOutVertex ) static inline void ClampTexCoord( ShadowVertex_t *pInVertex, ShadowVertex_t *pOutVertex )

View file

@ -2297,9 +2297,9 @@ void CVoxelTree::EnumerateElementsAlongRay( SpatialPartitionListMask_t listMask,
vecInvDelta[1] = ( clippedRay.m_Delta[1] != 0.0f ) ? 1.0f / clippedRay.m_Delta[1] : FLT_MAX; vecInvDelta[1] = ( clippedRay.m_Delta[1] != 0.0f ) ? 1.0f / clippedRay.m_Delta[1] : FLT_MAX;
vecInvDelta[2] = ( clippedRay.m_Delta[2] != 0.0f ) ? 1.0f / clippedRay.m_Delta[2] : FLT_MAX; vecInvDelta[2] = ( clippedRay.m_Delta[2] != 0.0f ) ? 1.0f / clippedRay.m_Delta[2] : FLT_MAX;
CPartitionVisits *pPrevVisits = BeginVisit();
m_lock.LockForRead(); m_lock.LockForRead();
CPartitionVisits *pPrevVisits = BeginVisit();
if ( ray.m_IsRay ) if ( ray.m_IsRay )
{ {
EnumerateElementsAlongRay_Ray( listMask, clippedRay, vecInvDelta, vecEnd, pIterator ); EnumerateElementsAlongRay_Ray( listMask, clippedRay, vecInvDelta, vecEnd, pIterator );

View file

@ -488,7 +488,7 @@ public:
{ {
if ( m_pData && m_bFreeMemory ) if ( m_pData && m_bFreeMemory )
{ {
free( (void*) m_pData ); delete[] (char*)m_pData;
} }
} }

View file

@ -1963,7 +1963,7 @@ void CViewRenderBeams::DrawBeam( Beam_t *pbeam )
// set color // set color
float srcColor[3]; float srcColor[3];
float color[3]; float color[4];
srcColor[0] = pbeam->r; srcColor[0] = pbeam->r;
srcColor[1] = pbeam->g; srcColor[1] = pbeam->g;
@ -1984,6 +1984,7 @@ void CViewRenderBeams::DrawBeam( Beam_t *pbeam )
VectorScale( color, (1/255.0), color ); VectorScale( color, (1/255.0), color );
VectorCopy( color, srcColor ); VectorCopy( color, srcColor );
VectorScale( color, ((float)pbeam->brightness / 255.0), color ); VectorScale( color, ((float)pbeam->brightness / 255.0), color );
color[3] = 1.f;
switch( pbeam->type ) switch( pbeam->type )
{ {

View file

@ -385,7 +385,7 @@ void Templates_RemoveAll(void)
free(pTemplate->pszMapData); free(pTemplate->pszMapData);
if ( pTemplate->pszFixedMapData ) if ( pTemplate->pszFixedMapData )
{ {
free(pTemplate->pszFixedMapData); delete[] pTemplate->pszFixedMapData;
} }
free(pTemplate); free(pTemplate);

View file

@ -137,6 +137,11 @@ public:
return pResult; return pResult;
} }
void operator delete(void *p)
{
MemAlloc_Free( p );
};
private: private:
CAI_BaseNPC *m_pOuter; CAI_BaseNPC *m_pOuter;
}; };

View file

@ -45,9 +45,8 @@ public:
DECLARE_DATADESC(); DECLARE_DATADESC();
private: private:
bool UpdateState( void ); bool UpdateState( void );
int m_state;
int m_state;
}; };
LINK_ENTITY_TO_CLASS( func_areaportal, CAreaPortal ); LINK_ENTITY_TO_CLASS( func_areaportal, CAreaPortal );

View file

@ -71,20 +71,18 @@ void CreateDumpDirectory( const char *szDirectoryName )
void CPolyhedron_AllocByNew::Release( void ) void CPolyhedron_AllocByNew::Release( void )
{ {
delete this; free(this);
} }
CPolyhedron_AllocByNew *CPolyhedron_AllocByNew::Allocate( unsigned short iVertices, unsigned short iLines, unsigned short iIndices, unsigned short iPolygons ) //creates the polyhedron along with enough memory to hold all it's data in a single allocation CPolyhedron_AllocByNew *CPolyhedron_AllocByNew::Allocate( unsigned short iVertices, unsigned short iLines, unsigned short iIndices, unsigned short iPolygons ) //creates the polyhedron along with enough memory to hold all it's data in a single allocation
{ {
void *pMemory = new unsigned char [ sizeof( CPolyhedron_AllocByNew ) + void *pMemory = malloc(sizeof( CPolyhedron_AllocByNew ) +
(iVertices * sizeof(Vector)) + (iVertices * sizeof(Vector)) +
(iLines * sizeof(Polyhedron_IndexedLine_t)) + (iLines * sizeof(Polyhedron_IndexedLine_t)) +
(iIndices * sizeof( Polyhedron_IndexedLineReference_t )) + (iIndices * sizeof( Polyhedron_IndexedLineReference_t )) +
(iPolygons * sizeof( Polyhedron_IndexedPolygon_t ))]; (iPolygons * sizeof( Polyhedron_IndexedPolygon_t )));
#include "tier0/memdbgoff.h" //the following placement new doesn't compile with memory debugging
CPolyhedron_AllocByNew *pAllocated = new ( pMemory ) CPolyhedron_AllocByNew; CPolyhedron_AllocByNew *pAllocated = new ( pMemory ) CPolyhedron_AllocByNew;
#include "tier0/memdbgon.h"
pAllocated->iVertexCount = iVertices; pAllocated->iVertexCount = iVertices;
pAllocated->iLineCount = iLines; pAllocated->iLineCount = iLines;
@ -106,7 +104,7 @@ public:
int iReferenceCount; int iReferenceCount;
#endif #endif
virtual void Release( void ) void Release( void ) override
{ {
#ifdef DBGFLAG_ASSERT #ifdef DBGFLAG_ASSERT
--iReferenceCount; --iReferenceCount;

View file

@ -42,7 +42,7 @@ public:
Polyhedron_IndexedLine_t *pLines; Polyhedron_IndexedLine_t *pLines;
Polyhedron_IndexedLineReference_t *pIndices; Polyhedron_IndexedLineReference_t *pIndices;
Polyhedron_IndexedPolygon_t *pPolygons; Polyhedron_IndexedPolygon_t *pPolygons;
unsigned short iVertexCount; unsigned short iVertexCount;
unsigned short iLineCount; unsigned short iLineCount;
unsigned short iIndexCount; unsigned short iIndexCount;
@ -53,10 +53,10 @@ public:
Vector Center( void ); Vector Center( void );
}; };
class CPolyhedron_AllocByNew : public CPolyhedron class CPolyhedron_AllocByNew final : public CPolyhedron
{ {
public: public:
virtual void Release( void ); void Release( void ) override;
static CPolyhedron_AllocByNew *Allocate( unsigned short iVertices, unsigned short iLines, unsigned short iIndices, unsigned short iPolygons ); //creates the polyhedron along with enough memory to hold all it's data in a single allocation static CPolyhedron_AllocByNew *Allocate( unsigned short iVertices, unsigned short iLines, unsigned short iIndices, unsigned short iPolygons ); //creates the polyhedron along with enough memory to hold all it's data in a single allocation
private: private:

View file

@ -2062,6 +2062,8 @@ struct studiohdr2_t
struct studiohdr_t struct studiohdr_t
{ {
DECLARE_BYTESWAP_DATADESC(); DECLARE_BYTESWAP_DATADESC();
studiohdr_t() = default;
int id; int id;
int version; int version;
@ -2077,10 +2079,10 @@ struct studiohdr_t
Vector illumposition; // illumination center Vector illumposition; // illumination center
Vector hull_min; // ideal movement hull size Vector hull_min; // ideal movement hull size
Vector hull_max; Vector hull_max;
Vector view_bbmin; // clipping bounding box Vector view_bbmin; // clipping bounding box
Vector view_bbmax; Vector view_bbmax;
int flags; int flags;
@ -2329,9 +2331,6 @@ struct studiohdr_t
// [and move all fields in studiohdr2_t into studiohdr_t and kill studiohdr2_t], // [and move all fields in studiohdr2_t into studiohdr_t and kill studiohdr2_t],
// or add your stuff to studiohdr2_t. See NumSrcBoneTransforms/SrcBoneTransform for the pattern to use. // or add your stuff to studiohdr2_t. See NumSrcBoneTransforms/SrcBoneTransform for the pattern to use.
int unused2[1]; int unused2[1];
studiohdr_t() {}
private: private:
// No copy constructors allowed // No copy constructors allowed
studiohdr_t(const studiohdr_t& vOther); studiohdr_t(const studiohdr_t& vOther);

View file

@ -1317,7 +1317,7 @@ void CStudioRenderContext::R_StudioDestroyStaticMeshes( int numStudioMeshes, stu
if ( *ppStudioMeshes ) if ( *ppStudioMeshes )
{ {
delete *ppStudioMeshes; delete[] *ppStudioMeshes;
*ppStudioMeshes = 0; *ppStudioMeshes = 0;
} }
} }

View file

@ -502,7 +502,7 @@ void SplitFileComponents( char const *pFileName, char *pDirOut, char *pBaseOut,
if ( !pDirOut[0] ) if ( !pDirOut[0] )
strcpy( pDirOut, " " ); // blank dir name strcpy( pDirOut, " " ); // blank dir name
V_strcpy( pBaseOut, V_UnqualifiedFileName( pFileName ) ); V_strncpy( pBaseOut, V_UnqualifiedFileName( pFileName ), MAX_PATH );
char *pDot = strrchr( pBaseOut, '.' ); char *pDot = strrchr( pBaseOut, '.' );
if ( pDot ) if ( pDot )
{ {