You've already forked libopenshot
mirror of
https://github.com/OpenShot/libopenshot.git
synced 2026-03-02 08:53:52 -08:00
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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user