Commit 706439c6c for imagemagick.org
commit 706439c6cbdb940720d3018008790b17e6c3b0a2
Author: Cristy <urban-warrior@imagemagick.org>
Date: Wed Jun 3 19:23:03 2026 -0400
support SetQuantumExtent() private method
diff --git a/MagickCore/quantum-private.h b/MagickCore/quantum-private.h
index 89aac0d2e..1398962ec 100644
--- a/MagickCore/quantum-private.h
+++ b/MagickCore/quantum-private.h
@@ -92,6 +92,9 @@ struct _QuantumInfo
meta_channel;
};
+extern MagickPrivate size_t
+ SetQuantumExtent(const Image *,QuantumInfo *);
+
extern MagickPrivate void
ResetQuantumState(QuantumInfo *);
diff --git a/MagickCore/quantum.c b/MagickCore/quantum.c
index 34e645c4b..f14ba04d4 100644
--- a/MagickCore/quantum.c
+++ b/MagickCore/quantum.c
@@ -669,10 +669,6 @@ MagickExport void SetQuantumAlphaType(QuantumInfo *quantum_info,
MagickExport MagickBooleanType SetQuantumDepth(const Image *image,
QuantumInfo *quantum_info,const size_t depth)
{
- size_t
- extent,
- quantum;
-
/*
Allocate the quantum pixel buffer.
*/
@@ -696,22 +692,7 @@ MagickExport MagickBooleanType SetQuantumDepth(const Image *image,
else
quantum_info->depth=16;
}
- /*
- Speculative allocation since we don't yet know the quantum type.
- */
- quantum=(GetPixelChannels(image)+quantum_info->pad+3)*
- ((quantum_info->depth+7)/8)*sizeof(double);
- extent=MagickMax(image->columns,image->rows)*quantum;
- if ((MagickMax(image->columns,image->rows) != 0) &&
- (quantum != (extent/MagickMax(image->columns,image->rows))))
- return(MagickFalse);
- if (quantum_info->pixels != (MemoryInfo **) NULL)
- {
- if (extent <= quantum_info->extent)
- return(MagickTrue);
- DestroyQuantumPixels(quantum_info);
- }
- return(AcquireQuantumPixels(quantum_info,extent));
+ return(SetQuantumExtent(image,quantum_info));
}
/*
@@ -751,7 +732,60 @@ MagickExport MagickBooleanType SetQuantumEndian(const Image *image,
if (IsEventLogging() != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
quantum_info->endian=endian;
- return(SetQuantumDepth(image,quantum_info,quantum_info->depth));
+ return(SetQuantumExtent(image,quantum_info));
+}
+
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
+% S e t Q u a n t u m E x t e n t %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% SetQuantumExtent() sets the quantum pixel buffer extent.
+%
+% The format of the SetQuantumExtent method is:
+%
+% size_t SetQuantumExtent(Image *image,QuantumInfo *quantum_info)
+%
+% A description of each parameter follows:
+%
+% o image: the image.
+%
+% o quantum_info: the quantum info.
+%
+*/
+MagickPrivate size_t SetQuantumExtent(const Image *image,
+ QuantumInfo *quantum_info)
+{
+ size_t
+ extent,
+ quantum;
+
+ /*
+ Speculative allocation since we don't yet know the quantum type.
+ */
+ assert(image != (Image *) NULL);
+ assert(image->signature == MagickCoreSignature);
+ assert(quantum_info != (QuantumInfo *) NULL);
+ assert(quantum_info->signature == MagickCoreSignature);
+ quantum=(GetPixelChannels(image)+quantum_info->pad+3)*
+ ((quantum_info->depth+7)/8)*sizeof(double);
+ extent=MagickMax(image->columns,image->rows)*quantum;
+ if ((MagickMax(image->columns,image->rows) != 0) &&
+ (quantum != (extent/MagickMax(image->columns,image->rows))))
+ return(MagickFalse);
+ if (quantum_info->pixels != (MemoryInfo **) NULL)
+ {
+ if (extent <= quantum_info->extent)
+ return(MagickTrue);
+ DestroyQuantumPixels(quantum_info);
+ }
+ return(AcquireQuantumPixels(quantum_info,extent));
}
/*
@@ -791,7 +825,7 @@ MagickExport MagickBooleanType SetQuantumFormat(const Image *image,
if (IsEventLogging() != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
quantum_info->format=format;
- return(SetQuantumDepth(image,quantum_info,quantum_info->depth));
+ return(SetQuantumExtent(image,quantum_info));
}
/*
@@ -975,7 +1009,7 @@ MagickExport MagickBooleanType SetQuantumPad(const Image *image,
if (pad >= (MAGICK_SSIZE_MAX/GetImageChannels(image)))
return(MagickFalse);
quantum_info->pad=pad;
- return(SetQuantumDepth(image,quantum_info,quantum_info->depth));
+ return(SetQuantumExtent(image,quantum_info));
}
/*
diff --git a/coders/ipl.c b/coders/ipl.c
index 9c10dff54..3e95db025 100644
--- a/coders/ipl.c
+++ b/coders/ipl.c
@@ -630,7 +630,7 @@ static MagickBooleanType WriteIPLImage(const ImageInfo *image_info,Image *image,
/*
Convert MIFF to IPL raster pixels.
*/
- if (SetQuantumDepth(image,quantum_info,quantum_info->depth) == MagickFalse)
+ if (SetQuantumExtent(image,quantum_info) == MagickFalse)
{
(void) ThrowMagickException(exception,GetMagickModule(),
CorruptImageError,"AnErrorHasOccurredWritingToFile","`%s'",
diff --git a/coders/sf3.c b/coders/sf3.c
index 5854ee74e..6fa2593e4 100644
--- a/coders/sf3.c
+++ b/coders/sf3.c
@@ -740,7 +740,7 @@ static MagickBooleanType WriteSF3Image(const ImageInfo *image_info,Image *image,
do
{
const Quantum *magick_restrict p;
- if (SetQuantumDepth(image,quantum_info,quantum_info->depth) == MagickFalse)
+ if (SetQuantumExtent(image,quantum_info) == MagickFalse)
{
(void) ThrowMagickException(exception,GetMagickModule(),
ResourceLimitError,"MemoryAllocationFailed","`%s'",image->filename);