From a626cb637e009ab1a2f6143aafdd75d6c5cf6905 Mon Sep 17 00:00:00 2001 From: JimBobSquarePants Date: Fri, 22 Sep 2017 12:14:07 +1000 Subject: [PATCH 1/4] Remove undisposed clone from default constructor --- src/ImageSharp/Image/ImageFrameCollection.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ImageSharp/Image/ImageFrameCollection.cs b/src/ImageSharp/Image/ImageFrameCollection.cs index b29fdc511..a2e53c044 100644 --- a/src/ImageSharp/Image/ImageFrameCollection.cs +++ b/src/ImageSharp/Image/ImageFrameCollection.cs @@ -24,7 +24,7 @@ namespace SixLabors.ImageSharp Guard.NotNull(parent, nameof(parent)); this.parent = parent; - this.AddFrame(new ImageFrame(width, height)); + this.frames.Add(new ImageFrame(width, height)); } internal ImageFrameCollection(Image parent, IEnumerable> frames) From b5c18d6e5db9b4fc6be5f09f9271f9cbfd5b3a1c Mon Sep 17 00:00:00 2001 From: JimBobSquarePants Date: Fri, 22 Sep 2017 12:43:32 +1000 Subject: [PATCH 2/4] Fix double cloning on collection overload. --- src/ImageSharp/Image/ImageFrameCollection.cs | 6 +++++- src/ImageSharp/Image/Image{TPixel}.cs | 9 ++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/ImageSharp/Image/ImageFrameCollection.cs b/src/ImageSharp/Image/ImageFrameCollection.cs index a2e53c044..a1cf82c38 100644 --- a/src/ImageSharp/Image/ImageFrameCollection.cs +++ b/src/ImageSharp/Image/ImageFrameCollection.cs @@ -24,6 +24,8 @@ namespace SixLabors.ImageSharp Guard.NotNull(parent, nameof(parent)); this.parent = parent; + + // Frames are already cloned within the caller this.frames.Add(new ImageFrame(width, height)); } @@ -33,9 +35,11 @@ namespace SixLabors.ImageSharp Guard.NotNullOrEmpty(frames, nameof(frames)); this.parent = parent; + + // Frames are already cloned by the caller foreach (ImageFrame f in frames) { - this.AddFrame(f); + this.frames.Add(f); } } diff --git a/src/ImageSharp/Image/Image{TPixel}.cs b/src/ImageSharp/Image/Image{TPixel}.cs index 85e1aa858..482971e54 100644 --- a/src/ImageSharp/Image/Image{TPixel}.cs +++ b/src/ImageSharp/Image/Image{TPixel}.cs @@ -143,9 +143,8 @@ namespace SixLabors.ImageSharp /// Returns a new image with all the same metadata as the original. public Image Clone() { - IEnumerable> frames = this.frames.Select(x => x.Clone()).ToArray(); - - return new Image(this.configuration, this.MetaData.Clone(), frames); + IEnumerable> clonedFrames = this.frames.Select(x => x.Clone()); + return new Image(this.configuration, this.MetaData.Clone(), clonedFrames); } /// @@ -162,8 +161,8 @@ namespace SixLabors.ImageSharp public Image CloneAs() where TPixel2 : struct, IPixel { - IEnumerable> frames = this.frames.Select(x => x.CloneAs()).ToArray(); - var target = new Image(this.configuration, this.MetaData, frames); + IEnumerable> clonedFrames = this.frames.Select(x => x.CloneAs()); + var target = new Image(this.configuration, this.MetaData.Clone(), clonedFrames); return target; } From 5066da574a4783dada958285e2c244dfa218e749 Mon Sep 17 00:00:00 2001 From: Scott Williams Date: Fri, 22 Sep 2017 07:33:11 +0100 Subject: [PATCH 3/4] fix constuctor validation --- src/ImageSharp/Image/ImageFrameCollection.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ImageSharp/Image/ImageFrameCollection.cs b/src/ImageSharp/Image/ImageFrameCollection.cs index a1cf82c38..3e9bb0343 100644 --- a/src/ImageSharp/Image/ImageFrameCollection.cs +++ b/src/ImageSharp/Image/ImageFrameCollection.cs @@ -39,6 +39,7 @@ namespace SixLabors.ImageSharp // Frames are already cloned by the caller foreach (ImageFrame f in frames) { + this.ValidateFrame(f); this.frames.Add(f); } } From c4980e358c88ccd996da972491906dbd29893c87 Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Fri, 22 Sep 2017 08:56:07 +0200 Subject: [PATCH 4/4] Clean the solution to force a rebuild with /p:codecov=true --- tests/CodeCoverage/CodeCoverage.cmd | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/CodeCoverage/CodeCoverage.cmd b/tests/CodeCoverage/CodeCoverage.cmd index 2c13cfc14..622001fcf 100644 --- a/tests/CodeCoverage/CodeCoverage.cmd +++ b/tests/CodeCoverage/CodeCoverage.cmd @@ -9,6 +9,8 @@ cd .. cd .. dotnet restore ImageSharp.sln +rem Clean the solution to force a rebuild with /p:codecov=true +dotnet clean ImageSharp.sln -c Release rem The -threshold options prevents this taking ages... tests\CodeCoverage\OpenCover.4.6.519\tools\OpenCover.Console.exe -target:"dotnet.exe" -targetargs:"test tests\ImageSharp.Tests\ImageSharp.Tests.csproj -c Release /p:codecov=true" -register:user -threshold:10 -oldStyle -safemode:off -output:.\ImageSharp.Coverage.xml -hideskipped:All -returntargetcode -filter:"+[SixLabors.ImageSharp*]*"