From 81a3cbac4523f8b3885b5d4409fd8f00b143e9b5 Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Fri, 30 Dec 2016 17:26:44 -0500 Subject: [PATCH] Ensured a copy is passed for writing back rather than the original. --- Storage/Disk/Disk.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Storage/Disk/Disk.cpp b/Storage/Disk/Disk.cpp index 6938014e7..fe7d1cea4 100644 --- a/Storage/Disk/Disk.cpp +++ b/Storage/Disk/Disk.cpp @@ -23,8 +23,9 @@ void Disk::set_track_at_position(unsigned int head, unsigned int position, const cached_tracks_[address] = track; if(!update_queue_) update_queue_.reset(new Concurrency::AsyncTaskQueue); - update_queue_->enqueue([this, head, position, track] { - store_updated_track_at_position(head, position, track, file_access_mutex_); + std::shared_ptr track_copy(track->clone()); + update_queue_->enqueue([this, head, position, track_copy] { + store_updated_track_at_position(head, position, track_copy, file_access_mutex_); }); }