https://git.reactos.org/?p=reactos.git;a=commitdiff;h=abdde0b764540617fd99ef397287421a3ace1dfc
commit abdde0b764540617fd99ef397287421a3ace1dfc Author: Bișoc George <[email protected]> AuthorDate: Sun Feb 11 22:56:38 2018 +0100 Commit: Hermès BÉLUSCA - MAÏTO <[email protected]> CommitDate: Sun Feb 11 22:56:38 2018 +0100 [EXPLORER] WatchList should be freed with delete[], not delete (#374) WatchList is a set of array objects, initialized with "new[]", so it should be freed with "delete[]" to free all of its elements. Otherwise using only "delete" only frees the first variable but not its array. This would lead to an undefined behaviour. --- base/shell/explorer/syspager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/base/shell/explorer/syspager.cpp b/base/shell/explorer/syspager.cpp index 0fa8eae4e3..a1982e7881 100644 --- a/base/shell/explorer/syspager.cpp +++ b/base/shell/explorer/syspager.cpp @@ -413,7 +413,7 @@ UINT WINAPI CIconWatcher::WatcherThread(_In_opt_ LPVOID lpParam) ASSERT(Size <= MAXIMUM_WAIT_OBJECTS); if (WatchList) - delete WatchList; + delete[] WatchList; WatchList = new HANDLE[Size]; WatchList[0] = This->m_WakeUpEvent; @@ -479,7 +479,7 @@ UINT WINAPI CIconWatcher::WatcherThread(_In_opt_ LPVOID lpParam) } if (WatchList) - delete WatchList; + delete[] WatchList; return 0; }
