Commit d6944d3c for libheif

commit d6944d3c674b77aaf8603735201a137e29cf2b06
Author: Dirk Farin <dirk.farin@gmail.com>
Date:   Sat Mar 14 01:12:50 2026 +0100

    jpeg: destroy cinfo object on error (#1727)

diff --git a/libheif/plugins/decoder_jpeg.cc b/libheif/plugins/decoder_jpeg.cc
index a21c528a..7d07cfd0 100644
--- a/libheif/plugins/decoder_jpeg.cc
+++ b/libheif/plugins/decoder_jpeg.cc
@@ -255,6 +255,7 @@ heif_error jpeg_decode_next_image2(void* decoder_raw, heif_image** out_img,
                                        &heif_img);
     if (err.code != heif_error_Ok) {
       assert(heif_img==nullptr);
+      jpeg_destroy_decompress(&cinfo);
       return err;
     }

@@ -265,6 +266,8 @@ heif_error jpeg_decode_next_image2(void* decoder_raw, heif_image** out_img,
       err.message = decoder->error_message.c_str();

       heif_image_release(heif_img);
+      heif_img = nullptr;
+      jpeg_destroy_decompress(&cinfo);
       return err;
     }

@@ -301,6 +304,7 @@ heif_error jpeg_decode_next_image2(void* decoder_raw, heif_image** out_img,
                                        &heif_img);
     if (err.code != heif_error_Ok) {
       assert(heif_img==nullptr);
+      jpeg_destroy_decompress(&cinfo);
       return err;
     }

@@ -312,6 +316,7 @@ heif_error jpeg_decode_next_image2(void* decoder_raw, heif_image** out_img,

       heif_image_release(heif_img);
       heif_img = nullptr; // avoid double free in jpeg error handler
+      jpeg_destroy_decompress(&cinfo);
       return err;
     }
     err = heif_image_add_plane_safe(heif_img, heif_channel_Cb, (cinfo.output_width + 1) / 2, (cinfo.output_height + 1) / 2, 8, limits);
@@ -322,6 +327,7 @@ heif_error jpeg_decode_next_image2(void* decoder_raw, heif_image** out_img,

       heif_image_release(heif_img);
       heif_img = nullptr; // avoid double free in jpeg error handler
+      jpeg_destroy_decompress(&cinfo);
       return err;
     }
     err = heif_image_add_plane_safe(heif_img, heif_channel_Cr, (cinfo.output_width + 1) / 2, (cinfo.output_height + 1) / 2, 8, limits);
@@ -332,6 +338,7 @@ heif_error jpeg_decode_next_image2(void* decoder_raw, heif_image** out_img,

       heif_image_release(heif_img);
       heif_img = nullptr; // avoid double free in jpeg error handler
+      jpeg_destroy_decompress(&cinfo);
       return err;
     }