diff --git a/aegisub/src/video_provider_cache.cpp b/aegisub/src/video_provider_cache.cpp index 14b8ac5e02cf98db8c9110bffb6e0fe8d50e4d7a..5779b4a2d0f15f2282ced927f88197a5aadc831e 100644 --- a/aegisub/src/video_provider_cache.cpp +++ b/aegisub/src/video_provider_cache.cpp @@ -60,7 +60,15 @@ std::shared_ptr<VideoFrame> VideoProviderCache::GetFrame(int n) { for (auto cur = cache.begin(); cur != cache.end(); ++cur) { if (cur->frame_number == n) { +#if BOOST_VERSION <= 105200 + // Until boost 1.52, boost::container::list incorrectly asserted + // that this != &other, so do an extra splice through an empty list + decltype(cache) temp; + temp.splice(temp.begin(), cache, cur); + cache.splice(cache.begin(), temp, temp.begin()); +#else cache.splice(cache.begin(), cache, cur); // Move to front +#endif return std::make_shared<VideoFrame>(cache.front()); }