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.

This commit is contained in:
Jonathan Thomas
2016-09-08 00:58:12 -05:00
parent c53c9364f3
commit dccd620615
2 changed files with 16 additions and 16 deletions

View File

@@ -218,28 +218,28 @@ void CacheMemory::Remove(long int start_frame_number, long int end_frame_number)
const GenericScopedLock<CriticalSection> lock(*cacheCriticalSection);
// Loop through frame numbers
deque<long int>::iterator itr = frame_numbers.begin();
while (itr != frame_numbers.end())
deque<long int>::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<long int>::iterator itr_ordered = ordered_frame_numbers.begin();
while (itr_ordered != ordered_frame_numbers.end())
vector<long int>::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)