Hi,
I modify all the solutions to compile ARToolkit (tinyxml, dsvl, etc...) with Visual Studio 2005.
And when I try glutSample in DSVL project, then it crashed: "map/set iterator not incrementable".
It is due to a bug in DSVL_GraphManager::SampleCB method:
******************
** Current code **
******************
if(mb.size() > 0) // constantly clean up (mb)
{
std::map<unsigned long, MemoryBufferEntry>::iterator iter;
for(iter = mb.begin();
iter != mb.end();
iter++)
{
if((*iter).second.use_count == 0)
{
(*iter).second.media_sample->Release();
std::map<unsigned long, MemoryBufferEntry>::iterator iter2 =
mb.erase(iter);
iter = iter2;
}
}
}
****************
** Fixed code **
****************
if(mb.size() > 0) // constantly clean up (mb)
{
std::map<unsigned long, MemoryBufferEntry>::iterator iter;
for(iter = mb.begin();
iter != mb.end();
/*iter++*/)
{
if((*iter).second.use_count == 0)
{
(*iter).second.media_sample->Release();
std::map<unsigned long, MemoryBufferEntry>::iterator iter2 =
mb.erase(iter);
iter = iter2;
}
else
iter++;
}
}
**************
**************
The 'iter++' must be done only if the iterator is not removed.
David
Logged In: YES
user_id=1980945
Originator: YES
Same remark on DSVL_Manager::DisableMemoryBuffer method.