diff --git a/core/sourcehook/sourcehook_impl.h b/core/sourcehook/sourcehook_impl.h index 96cba35b..c9c9608c 100644 --- a/core/sourcehook/sourcehook_impl.h +++ b/core/sourcehook/sourcehook_impl.h @@ -256,9 +256,20 @@ namespace SourceHook ICleanupTask *m_CleanupTask; + bool isValidIterator(List::iterator &myIter, List &myList) { + for (auto iter = myList.begin(); iter != myList.end(); ++iter) { + if (iter == myIter) { + return true; + } + } + return false; + } + void SkipPaused(List::iterator &iter, List &list) { - while (iter != list.end() && iter->IsPaused()) + if (!iter || !isValidIterator(iter, list)) + iter = list.end(); + while (iter != list.end() && iter && iter->IsPaused()) ++iter; } public: