Commit 175355ff4 for imagemagick.org
commit 175355ff4b56e91505051e0d9cb8191711ea6562
Author: Dirk Lemstra <dirk@lemstra.org>
Date: Thu May 29 14:09:18 2025 +0200
No longer call heif_image_handle_get_context to make sure we always delete it (#8184).
diff --git a/coders/heic.c b/coders/heic.c
index 97572e6cc..61b2fafa8 100644
--- a/coders/heic.c
+++ b/coders/heic.c
@@ -370,7 +370,8 @@ static MagickBooleanType ReadHEICXMPProfile(Image *image,
}
static MagickBooleanType ReadHEICImageHandle(const ImageInfo *image_info,
- Image *image,struct heif_image_handle *image_handle,ExceptionInfo *exception)
+ Image *image,struct heif_context *heif_context,
+ struct heif_image_handle *image_handle,ExceptionInfo *exception)
{
const uint8_t
*p,
@@ -430,10 +431,6 @@ static MagickBooleanType ReadHEICImageHandle(const ImageInfo *image_info,
int
count;
- struct heif_context
- *heif_context;
-
- heif_context=heif_image_handle_get_context(image_handle);
item_id=heif_image_handle_get_item_id(image_handle);
count=heif_item_get_transformation_properties(heif_context,item_id,
transforms,1);
@@ -629,7 +626,8 @@ static MagickBooleanType ReadHEICImageHandle(const ImageInfo *image_info,
}
static void ReadHEICDepthImage(const ImageInfo *image_info,Image *image,
- struct heif_image_handle *image_handle,ExceptionInfo *exception)
+ struct heif_context *heif_context,struct heif_image_handle *image_handle,
+ ExceptionInfo *exception)
{
const char
*option;
@@ -666,7 +664,7 @@ static void ReadHEICDepthImage(const ImageInfo *image_info,Image *image,
if (GetNextImageInList(image) != (Image *) NULL)
{
image=SyncNextImageInList(image);
- (void) ReadHEICImageHandle(image_info,image,depth_handle,exception);
+ (void) ReadHEICImageHandle(image_info,image,heif_context,depth_handle,exception);
}
heif_image_handle_release(depth_handle);
}
@@ -754,7 +752,8 @@ static Image *ReadHEICImage(const ImageInfo *image_info,
heif_context_free(heif_context);
return(DestroyImageList(image));
}
- status=ReadHEICImageHandle(image_info,image,image_handle,exception);
+ status=ReadHEICImageHandle(image_info,image,heif_context,image_handle,
+ exception);
heif_image_handle_release(image_handle);
count=(ssize_t) heif_context_get_number_of_top_level_images(heif_context);
if ((status != MagickFalse) && (count > 1))
@@ -793,7 +792,8 @@ static Image *ReadHEICImage(const ImageInfo *image_info,
status=MagickFalse;
break;
}
- status=ReadHEICImageHandle(image_info,image,image_handle,exception);
+ status=ReadHEICImageHandle(image_info,image,heif_context,image_handle,
+ exception);
heif_image_handle_release(image_handle);
if (status == MagickFalse)
break;
@@ -810,7 +810,7 @@ static Image *ReadHEICImage(const ImageInfo *image_info,
heif_context_free(heif_context);
return(DestroyImageList(image));
}
- ReadHEICDepthImage(image_info,image,image_handle,exception);
+ ReadHEICDepthImage(image_info,image,heif_context,image_handle,exception);
heif_image_handle_release(image_handle);
heif_context_free(heif_context);
if (status == MagickFalse)