dotnet/winforms
View on GitHubIcon.Save(stream) each time returns different results
Open
#8,853 opened on Dec 2, 2021
area-System.Drawinghelp wanted
Repository metrics
- Stars
- (4,100 stars)
- PR merge metrics
- (Avg merge 14d 22h) (56 merged PRs in 30d)
Description
Description
We use the following code to compare two icons:
private static bool IconEquals(Icon icon1, Icon icon2) {
var stream1 = new System.IO.MemoryStream();
icon1.Save(stream1);
var stream2 = new System.IO.MemoryStream();
icon2.Save(stream2);
return System.Linq.Enumerable.SequenceEqual(stream1.ToArray(), stream2.ToArray());
}
With the net6.0 release the stream.ToArray() method each time returns different results for the same Icon. You can modify the IconEquals as follows and it will return false:
private static bool IconEquals(Icon icon1) {
var stream1 = new System.IO.MemoryStream();
icon1.Save(stream1);
var stream2 = new System.IO.MemoryStream();
icon1.Save(stream2);
return System.Linq.Enumerable.SequenceEqual(stream1.ToArray(), stream2.ToArray());
}
Reproduction Steps
Launch the following code with any Icon:
private static bool IconEquals(Icon icon1) {
var stream1 = new System.IO.MemoryStream();
icon1.Save(stream1);
var stream2 = new System.IO.MemoryStream();
icon1.Save(stream2);
return System.Linq.Enumerable.SequenceEqual(stream1.ToArray(), stream2.ToArray());
}
Expected behavior
The IconEquals method should return true.
Actual behavior
The IconEquals method returns false.
Regression?
Works on net5.0
Known Workarounds
No response
Configuration
Windows 10
Other information
No response