mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-22 14:16:50 +00:00
game/server: fix some Asan issues
This commit is contained in:
parent
d1ac11a5c7
commit
9c2c7e3529
@ -111,7 +111,7 @@ public:
|
||||
else
|
||||
{
|
||||
int result = 0;
|
||||
for ( int i = pGroup->followers.Head(); i != pGroup->followers.InvalidIndex(); i = pGroup->followers.Next( i ) )
|
||||
for ( intp i = pGroup->followers.Head(); i != pGroup->followers.InvalidIndex(); i = pGroup->followers.Next( i ) )
|
||||
{
|
||||
if ( pGroup->followers[i].hFollower && pGroup->followers[i].hFollower->ClassMatches( iszClassname ) )
|
||||
{
|
||||
@ -131,7 +131,7 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
int h = pGroup->followers.Head();
|
||||
intp h = pGroup->followers.Head();
|
||||
|
||||
while( h != pGroup->followers.InvalidIndex() )
|
||||
{
|
||||
|
@ -120,6 +120,8 @@ CAI_Network::CAI_Network()
|
||||
#ifdef AI_NODE_TREE
|
||||
m_pNodeTree = NULL;
|
||||
#endif
|
||||
|
||||
gEntList.AddListenerEntity( this );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@ -133,6 +135,9 @@ CAI_Network::~CAI_Network()
|
||||
m_pNodeTree = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
gEntList.RemoveListenerEntity( this );
|
||||
|
||||
if ( m_pAInode )
|
||||
{
|
||||
for ( int node = 0; node < m_iNumNodes; node++ )
|
||||
@ -642,3 +647,22 @@ IterationRetval_t CAI_Network::EnumElement( IHandleEntity *pHandleEntity )
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
||||
void CAI_Network::OnEntityDeleted( CBaseEntity *pEntity )
|
||||
{
|
||||
if( pEntity->IsNPC() )
|
||||
return;
|
||||
|
||||
const char *classname = pEntity->GetClassname();
|
||||
if( !classname || strcmp(classname, "ai_hint") != 0 )
|
||||
return;
|
||||
|
||||
for( int i = 0; i < m_iNumNodes; i++)
|
||||
{
|
||||
if( m_pAInode[i]->GetHint() == (CAI_Hint*)pEntity )
|
||||
{
|
||||
m_pAInode[i]->SetHint( NULL );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -84,12 +84,14 @@ public:
|
||||
// Purpose: Stores a node graph through which an AI may pathfind
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class CAI_Network : public IPartitionEnumerator
|
||||
class CAI_Network : public IPartitionEnumerator, public IEntityListener
|
||||
{
|
||||
public:
|
||||
CAI_Network();
|
||||
~CAI_Network();
|
||||
|
||||
void OnEntityDeleted( CBaseEntity *pEntity );
|
||||
|
||||
CAI_Node * AddNode( const Vector &origin, float yaw ); // Returns a new node in the network
|
||||
CAI_Link * CreateLink( int srcID, int destID, CAI_DynamicLink *pDynamicLink = NULL );
|
||||
|
||||
@ -128,6 +130,8 @@ public:
|
||||
|
||||
CAI_Node** AccessNodes() const { return m_pAInode; }
|
||||
|
||||
|
||||
|
||||
private:
|
||||
friend class CAI_NetworkManager;
|
||||
|
||||
|
@ -2019,6 +2019,9 @@ bool V_StripLastDir( char *dirName, int maxlen )
|
||||
//-----------------------------------------------------------------------------
|
||||
const char * V_UnqualifiedFileName( const char * in )
|
||||
{
|
||||
if( !in || !in[0] )
|
||||
return in;
|
||||
|
||||
// back up until the character after the first path separator we find,
|
||||
// or the beginning of the string
|
||||
const char * out = in + strlen( in ) - 1;
|
||||
|
Loading…
Reference in New Issue
Block a user