From a6f3944c065e5327234eae8cada227619a47510b Mon Sep 17 00:00:00 2001 From: Susko3 Date: Thu, 18 Apr 2024 09:41:15 +0200 Subject: [PATCH] Use `Marshal.Copy` on the buffer --- osu.Framework/Platform/Windows/WindowsClipboard.cs | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/osu.Framework/Platform/Windows/WindowsClipboard.cs b/osu.Framework/Platform/Windows/WindowsClipboard.cs index 1e9d304663..eb1cdb1681 100644 --- a/osu.Framework/Platform/Windows/WindowsClipboard.cs +++ b/osu.Framework/Platform/Windows/WindowsClipboard.cs @@ -94,16 +94,11 @@ public override bool SetImage(Image image) { var encoder = image.Configuration.ImageFormatsManager.GetEncoder(BmpFormat.Instance); image.Save(stream, encoder); - var span = new ReadOnlySpan(stream.GetBuffer(), bitmap_file_header_length, (int)stream.Length - bitmap_file_header_length); - IntPtr unmanagedPointer = Marshal.AllocHGlobal(span.Length); - unsafe - { - fixed (void* source = span) - Buffer.MemoryCopy(source, unmanagedPointer.ToPointer(), span.Length, span.Length); - } - - return setClipboard(unmanagedPointer, span.Length, cf_dib); + int bitmapDataLength = (int)stream.Length - bitmap_file_header_length; + IntPtr unmanagedPointer = Marshal.AllocHGlobal(bitmapDataLength); + Marshal.Copy(stream.GetBuffer(), bitmap_file_header_length, unmanagedPointer, bitmapDataLength); + return setClipboard(unmanagedPointer, bitmapDataLength, cf_dib); } }