Skip to content

Commit 627b5f7

Browse files
Merge pull request #2890 from SixLabors/af/backport-2859
Backport #2859 to release/2.1.x
2 parents c287b32 + 67f7848 commit 627b5f7

File tree

11 files changed

+236
-134
lines changed

11 files changed

+236
-134
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@
115115
*.jpg filter=lfs diff=lfs merge=lfs -text
116116
*.jpeg filter=lfs diff=lfs merge=lfs -text
117117
*.bmp filter=lfs diff=lfs merge=lfs -text
118+
*.BMP filter=lfs diff=lfs merge=lfs -text
118119
*.gif filter=lfs diff=lfs merge=lfs -text
119120
*.png filter=lfs diff=lfs merge=lfs -text
120121
*.tif filter=lfs diff=lfs merge=lfs -text

.github/workflows/build-and-test.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,16 @@ jobs:
7474
runs-on: ${{matrix.options.os}}
7575

7676
steps:
77+
- name: Install Ubuntu prerequisites
78+
if: ${{ contains(matrix.options.os, 'ubuntu') }}
79+
run: |
80+
# libssl 1.1 (required by old .NET runtimes)
81+
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb
82+
sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb
83+
84+
# libgdiplus
85+
sudo apt-get -y install libgdiplus libgif-dev libglib2.0-dev libcairo2-dev libtiff-dev libexif-dev
86+
7787
- name: Git Config
7888
shell: bash
7989
run: |
@@ -151,7 +161,7 @@ jobs:
151161
XUNIT_PATH: .\tests\ImageSharp.Tests # Required for xunit
152162

153163
- name: Export Failed Output
154-
uses: actions/upload-artifact@v2
164+
uses: actions/upload-artifact@v4
155165
if: failure()
156166
with:
157167
name: actual_output_${{ runner.os }}_${{ matrix.options.framework }}${{ matrix.options.runtime }}.zip

src/ImageSharp/Formats/Gif/LzwDecoder.cs

Lines changed: 193 additions & 131 deletions
Large diffs are not rendered by default.

tests/ImageSharp.Tests/Formats/Bmp/BmpDecoderTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System;
55
using System.IO;
66
using Microsoft.DotNet.RemoteExecutor;
7-
7+
using Microsoft.DotNet.XUnitExtensions;
88
using SixLabors.ImageSharp.Formats.Bmp;
99
using SixLabors.ImageSharp.Memory;
1010
using SixLabors.ImageSharp.Metadata;

tests/ImageSharp.Tests/Formats/Gif/GifDecoderTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,5 +317,17 @@ public void IssueTooLargeLzwBits<TPixel>(TestImageProvider<TPixel> provider)
317317
image.DebugSaveMultiFrame(provider);
318318
image.CompareToReferenceOutputMultiFrame(provider, ImageComparer.Exact);
319319
}
320+
321+
// https://github.com/SixLabors/ImageSharp/issues/2859
322+
[Theory]
323+
[WithFile(TestImages.Gif.Issues.Issue2859_A, PixelTypes.Rgba32)]
324+
[WithFile(TestImages.Gif.Issues.Issue2859_B, PixelTypes.Rgba32)]
325+
public void Issue2859_LZWPixelStackOverflow<TPixel>(TestImageProvider<TPixel> provider)
326+
where TPixel : unmanaged, IPixel<TPixel>
327+
{
328+
using Image<TPixel> image = provider.GetImage();
329+
image.DebugSaveMultiFrame(provider);
330+
image.CompareToReferenceOutputMultiFrame(provider, ImageComparer.Exact);
331+
}
320332
}
321333
}

tests/ImageSharp.Tests/TestImages.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,9 @@ public static class Issues
464464
public const string Issue1962NoColorTable = "Gif/issues/issue1962_tiniest_gif_1st.gif";
465465
public const string Issue2012EmptyXmp = "Gif/issues/issue2012_Stronghold-Crusader-Extreme-Cover.gif";
466466
public const string Issue2012BadMinCode = "Gif/issues/issue2012_drona1.gif";
467-
public const string Issue2758 = "Gif/issues/issue_2758.gif";
467+
public const string Issue2758 = "Gif/issues/issue_2758.gif";
468+
public const string Issue2859_A = "Gif/issues/issue_2859_A.gif";
469+
public const string Issue2859_B = "Gif/issues/issue_2859_B.gif";
468470
}
469471

470472
public static readonly string[] All = { Rings, Giphy, Cheers, Trans, Kumin, Leo, Ratio4x1, Ratio1x4 };
Loading
Loading
Loading
Lines changed: 3 additions & 0 deletions
Loading
Lines changed: 3 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)