From 757ad8ad07da162b5cc136563f86a6eca8d17c1a Mon Sep 17 00:00:00 2001
From: Harald Martini <harald.martini@student.tugraz.at>
Date: Thu, 26 May 2022 10:56:48 +0200
Subject: [PATCH] Changed CycleFile property to return a copy of the CycleFile
 stream to avoid stream corruption while adding the cycle to the cache

---
 .../VectoCore/Models/Declaration/Mission.cs   | 22 ++++++++++++++++++-
 1 file changed, 21 insertions(+), 1 deletion(-)

diff --git a/VectoCore/VectoCore/Models/Declaration/Mission.cs b/VectoCore/VectoCore/Models/Declaration/Mission.cs
index 592ca44b1e..7712016256 100644
--- a/VectoCore/VectoCore/Models/Declaration/Mission.cs
+++ b/VectoCore/VectoCore/Models/Declaration/Mission.cs
@@ -58,8 +58,28 @@ namespace TUGraz.VectoCore.Models.Declaration
 
 		public Kilogram BodyCurbWeight { get; internal set; }
 
+		private Stream _cycleFile;
+		private object _cycleLock = new object();
 		[JsonIgnore]
-		public Stream CycleFile { get; internal set; }
+		public Stream CycleFile
+		{
+			get
+			{
+				lock (_cycleLock) {
+					var memoryStream = new MemoryStream();
+					_cycleFile.CopyTo(memoryStream);
+					memoryStream.Position = 0;
+					_cycleFile.Seek(0, SeekOrigin.Begin);
+					return memoryStream;
+				}
+			}
+			internal set
+			{
+				lock (_cycleLock) {
+					_cycleFile = value;
+				}
+			}
+		}
 
 		public IList<MissionTrailer> Trailer { get; internal set; }
 
-- 
GitLab