From dccd620615cd80b64c2ace3703f98e958438b84a Mon Sep 17 00:00:00 2001 From: Jonathan Thomas Date: Thu, 8 Sep 2016 00:58:12 -0500 Subject: [PATCH] Small refactor of Cache::Remove method, to prevent a stack smashing error I'm getting on some build servers. This might not solve it, but it's worth a try. --- src/CacheDisk.cpp | 16 ++++++++-------- src/CacheMemory.cpp | 16 ++++++++-------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/CacheDisk.cpp b/src/CacheDisk.cpp index 9691f51d..6ca8941e 100644 --- a/src/CacheDisk.cpp +++ b/src/CacheDisk.cpp @@ -339,21 +339,21 @@ void CacheDisk::Remove(long int start_frame_number, long int end_frame_number) const GenericScopedLock lock(*cacheCriticalSection); // Loop through frame numbers - deque::iterator itr = frame_numbers.begin(); - while (itr != frame_numbers.end()) + deque::iterator itr; + for(itr = frame_numbers.begin(); itr != frame_numbers.end();) { //deque::iterator current = itr++; if (*itr >= start_frame_number && *itr <= end_frame_number) { // erase frame number - itr = frame_numbers.erase(itr++); + itr = frame_numbers.erase(itr); } else - ++itr; + itr++; } // Loop through ordered frame numbers - vector::iterator itr_ordered = ordered_frame_numbers.begin(); - while (itr_ordered != ordered_frame_numbers.end()) + vector::iterator itr_ordered; + for(itr_ordered = ordered_frame_numbers.begin(); itr_ordered != ordered_frame_numbers.end();) { if (*itr_ordered >= start_frame_number && *itr_ordered <= end_frame_number) { @@ -372,9 +372,9 @@ void CacheDisk::Remove(long int start_frame_number, long int end_frame_number) if (audio_file.exists()) audio_file.remove(); - itr_ordered = ordered_frame_numbers.erase(itr_ordered++); + itr_ordered = ordered_frame_numbers.erase(itr_ordered); } else - ++itr_ordered; + itr_ordered++; } // Needs range processing (since cache has changed) diff --git a/src/CacheMemory.cpp b/src/CacheMemory.cpp index 2279f834..e42de1a3 100644 --- a/src/CacheMemory.cpp +++ b/src/CacheMemory.cpp @@ -218,28 +218,28 @@ void CacheMemory::Remove(long int start_frame_number, long int end_frame_number) const GenericScopedLock lock(*cacheCriticalSection); // Loop through frame numbers - deque::iterator itr = frame_numbers.begin(); - while (itr != frame_numbers.end()) + deque::iterator itr; + for(itr = frame_numbers.begin(); itr != frame_numbers.end();) { if (*itr >= start_frame_number && *itr <= end_frame_number) { // erase frame number - itr = frame_numbers.erase(itr++); + itr = frame_numbers.erase(itr); }else - ++itr; + itr++; } // Loop through ordered frame numbers - vector::iterator itr_ordered = ordered_frame_numbers.begin(); - while (itr_ordered != ordered_frame_numbers.end()) + vector::iterator itr_ordered; + for(itr_ordered = ordered_frame_numbers.begin(); itr_ordered != ordered_frame_numbers.end();) { if (*itr_ordered >= start_frame_number && *itr_ordered <= end_frame_number) { // erase frame number frames.erase(*itr_ordered); - itr_ordered = ordered_frame_numbers.erase(itr_ordered++); + itr_ordered = ordered_frame_numbers.erase(itr_ordered); }else - ++itr_ordered; + itr_ordered++; } // Needs range processing (since cache has changed)