Update of /cvsroot/decaldev/source/DecalFilters
In directory sc8-pr-cvs1:/tmp/cvs-serv9144/DecalFilters
Modified Files:
IdentifyQueue.cpp IdentifyQueue.h
Log Message:
Fixed Out of Order removal to remove matched item not begin() and break the for on match.
Index: IdentifyQueue.cpp
===================================================================
RCS file: /cvsroot/decaldev/source/DecalFilters/IdentifyQueue.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** IdentifyQueue.cpp 1 Apr 2003 04:30:53 -0000 1.8
--- IdentifyQueue.cpp 1 Apr 2003 19:04:57 -0000 1.9
***************
*** 82,89 ****
if( !m_Queue.empty() )
{
! for( std::deque< IDStruct * >::iterator pDeque = m_Queue.begin(); pDeque != m_Queue.end(); pDeque++ )
{
! if( IsBadReadPtr( reinterpret_cast< void * >( *pDeque ), sizeof( IDStruct ) ) )
! continue;
if ( (*pDeque)->lObjectID == lObjectID )
--- 82,89 ----
if( !m_Queue.empty() )
{
! for( IDContainerIterator pDeque = m_Queue.begin(); pDeque != m_Queue.end(); pDeque++ )
{
! //if( IsBadReadPtr( reinterpret_cast< void * >( *pDeque ), sizeof( IDStruct ) ) )
! // continue;
if ( (*pDeque)->lObjectID == lObjectID )
***************
*** 122,134 ****
pMembers->get_NextInt( _bstr_t( "object" ), &lObjectID );
! for( std::deque< IDStruct * >::iterator pDeque = m_Queue.begin(); pDeque != m_Queue.end(); pDeque++ )
{
! if( IsBadReadPtr( reinterpret_cast< void * >( *pDeque ), sizeof( IDStruct ) ) )
! continue;
if ( (*pDeque)->lObjectID == lObjectID )
{
m_lAttempts = 0;
! m_Queue.erase( m_Queue.begin() );
}
}
--- 122,136 ----
pMembers->get_NextInt( _bstr_t( "object" ), &lObjectID );
!
! for( IDContainerIterator pDeque = m_Queue.begin(); pDeque != m_Queue.end(); pDeque++ )
{
! //if( IsBadReadPtr( reinterpret_cast< void * >( *pDeque ), sizeof( IDStruct ) ) )
! // continue;
if ( (*pDeque)->lObjectID == lObjectID )
{
m_lAttempts = 0;
! m_Queue.erase( pDeque );
! break;
}
}
Index: IdentifyQueue.h
===================================================================
RCS file: /cvsroot/decaldev/source/DecalFilters/IdentifyQueue.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** IdentifyQueue.h 31 Mar 2003 21:32:21 -0000 1.2
--- IdentifyQueue.h 1 Apr 2003 19:04:57 -0000 1.3
***************
*** 46,54 ****
CComPtr< IDecal > m_pDecal;
CComPtr< IACHooks > m_pHooks;
! std::deque< IDStruct * > m_Queue;
bool m_bWaiting;
long m_lAttempts;
!
void DoGameEvent( IMessageIterator *pMembers );
void DoIDItem( IMessageIterator *pMembers );
--- 46,58 ----
CComPtr< IDecal > m_pDecal;
CComPtr< IACHooks > m_pHooks;
+
+ typedef std::deque<IDStruct *> IDContainer;
+ typedef std::deque<IDStruct *>::iterator IDContainerIterator;
! IDContainer m_Queue;
bool m_bWaiting;
long m_lAttempts;
!
!
void DoGameEvent( IMessageIterator *pMembers );
void DoIDItem( IMessageIterator *pMembers );
|