diff --git a/tests/ImageSharp.Sandbox46/ImageSharp.Sandbox46.csproj b/tests/ImageSharp.Sandbox46/ImageSharp.Sandbox46.csproj
index bb559b70d..4d7b7de75 100644
--- a/tests/ImageSharp.Sandbox46/ImageSharp.Sandbox46.csproj
+++ b/tests/ImageSharp.Sandbox46/ImageSharp.Sandbox46.csproj
@@ -11,7 +11,7 @@
James Jackson-South and contributors
James Jackson-South
SixLabors.ImageSharp.Sandbox46
- 7.2
+ 7.3
diff --git a/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs b/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs
index 6d2a74c03..5bfbb058b 100644
--- a/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs
+++ b/tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs
@@ -1,20 +1,20 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
+using System;
+using System.Collections.Generic;
+using System.IO;
using System.Text;
+using SixLabors.ImageSharp.Advanced;
using SixLabors.ImageSharp.Formats.Gif;
+using SixLabors.ImageSharp.MetaData;
using SixLabors.ImageSharp.PixelFormats;
+using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit;
-using System.IO;
-using SixLabors.ImageSharp.Advanced;
// ReSharper disable InconsistentNaming
namespace SixLabors.ImageSharp.Tests.Formats.Gif
{
- using System.Collections.Generic;
- using SixLabors.ImageSharp.MetaData;
- using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
-
public class GifDecoderTests
{
private const PixelTypes TestPixelTypes = PixelTypes.Rgba32 | PixelTypes.RgbaVector | PixelTypes.Argb32;
@@ -70,6 +70,27 @@ namespace SixLabors.ImageSharp.Tests.Formats.Gif
}
}
+ [Fact]
+ public unsafe void Decode_NonTerminatedFinalFrame()
+ {
+ var testFile = TestFile.Create(TestImages.Gif.Rings);
+
+ int length = testFile.Bytes.Length - 2;
+
+ fixed (byte* data = testFile.Bytes.AsSpan(0, length))
+ {
+ using (var stream = new UnmanagedMemoryStream(data, length))
+ {
+ var decoder = new GifDecoder();
+
+ using (Image image = decoder.Decode(Configuration.Default, stream))
+ {
+ Assert.Equal((200, 200), (image.Width, image.Height));
+ }
+ }
+ }
+ }
+
[Theory]
[MemberData(nameof(RatioFiles))]
public void Decode_VerifyRatio(string imagePath, int xResolution, int yResolution, PixelResolutionUnit resolutionUnit)