From: <ar...@us...> - 2003-04-01 19:05:03
|
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 ); |