Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -171,11 +171,10 @@ protected virtual Image LoadFromStream(Stream stream)
}

// Copy the original stream to a new memory stream to avoid locking the file.
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
return Image.FromStream(memoryStream);
}
// The created image will take over ownership of the stream.
var memoryStream = new MemoryStream();
stream.CopyTo(memoryStream);
return Image.FromStream(memoryStream);
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,9 @@ private ImageListImage LoadImageFromStream(Stream stream, bool imageIsIcon)
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, (int)stream.Length);

using (MemoryStream ms = new MemoryStream(buffer))
{
return ImageListImage.ImageListImageFromStream(ms, imageIsIcon);
}
// The created image will take over ownership of the stream.
MemoryStream ms = new MemoryStream(buffer);
return ImageListImage.ImageListImageFromStream(ms, imageIsIcon);
}

/// <summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,10 @@ public void BitmapEditor_LoadFromStream_BitmapStream_ReturnsExpected()
stream.Position = 0;
Bitmap result = Assert.IsType<Bitmap>(editor.LoadFromStream(stream));
Assert.Equal(new Size(10, 10), result.Size);

using var resultStream = new MemoryStream();
result.Save(resultStream, ImageFormat.Bmp);
Assert.Equal(stream.Length, resultStream.Length);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,10 @@ public void ImageEditor_LoadFromStream_BitmapStream_ReturnsExpected()
stream.Position = 0;
Bitmap result = Assert.IsType<Bitmap>(editor.LoadFromStream(stream));
Assert.Equal(new Size(10, 10), result.Size);

using var resultStream = new MemoryStream();
result.Save(resultStream, ImageFormat.Bmp);
Assert.Equal(stream.Length, resultStream.Length);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using Xunit;

namespace System.Windows.Forms.Design.Tests
{
public class ImageListImageEditorTests : IClassFixture<ThreadExceptionFixture>
{
[Fact]
public void ImageListImageEditor_LoadImageFromStream_BitmapStream_ReturnsExpected()
{
var editor = new ImageListImageEditor();
var editor_LoadImageFromStream = editor.TestAccessor().CreateDelegate<Func<Stream, bool, ImageListImage>>("LoadImageFromStream");

using var stream = new MemoryStream();
using var image = new Bitmap(10, 10);
image.Save(stream, ImageFormat.Bmp);
stream.Position = 0;

var result = Assert.IsType<ImageListImage>(editor_LoadImageFromStream(stream, false));
var resultImage = Assert.IsType<Bitmap>(result.Image);
Assert.Equal(new Size(10, 10), result.Size);
Assert.Equal(new Size(10, 10), resultImage.Size);

using var resultStream = new MemoryStream();
result.Image.Save(resultStream, ImageFormat.Bmp);
Assert.Equal(stream.Length, resultStream.Length);
}
}
}