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());
 		}