He mentions that it's fine to call Unlink twice. Presumably the first Unlink zeroes out the prev/next fields.
m_prevLink->m_nextNode = m_nextNode;
I don't see where m_prevLink is changed. If the previous link has gone away, and you call RemoveFromList on this node a second time, it's going to chase that pointer.