Hacker News new | ask | show | jobs
by kevingadd 5023 days ago
He mentions that it's fine to call Unlink twice. Presumably the first Unlink zeroes out the prev/next fields.
2 comments

Indeed, I may have read the code wrong. But look at line 188.

    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.
RemoveFromList is a private method. All the public methods, other than the destructor, that call it also modify m_prevLink.
There's a better trick: point the link structure at itself. This avoids any need to test for null.