Description
CAtlList copies itself incorrectly - the m_Next at the end of list (and m_Prev) gets corrupted and points to nonexisting m_FreeNode.
See the screeshots in the attachment.
How to reproduce:
ATL::CAtlList<T> GetList()
|
{
|
ATL::CAtlList<T> List;
|
// fill it |
return List; |
}
|
|
VOID ProcessList(const ATL::CAtlList<T>& List) |
{
|
// process the list |
}
|
|
// call like this
|
...
|
ProcessList(GetList());
|
...
|
|
// or like this
|
...
|
ATL::CAtlList<T> list = GetList();
|
ProcessList(list);
|
...
|
|