%
*/
-static inline unsigned long MagickMax(const unsigned long x,
- const unsigned long y)
+static inline size_t MagickMax(const size_t x,
+ const size_t y)
{
if (x > y)
return(x);
QuantumInfo
*quantum_info;
- quantum_info=(QuantumInfo *) AcquireAlignedMemory(1,sizeof(*quantum_info));
+ quantum_info=(QuantumInfo *) AcquireMagickMemory(sizeof(*quantum_info));
if (quantum_info == (QuantumInfo *) NULL)
ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
quantum_info->signature=MagickSignature;
static MagickBooleanType AcquireQuantumPixels(QuantumInfo *quantum_info,
const size_t extent)
{
- register long
+ register ssize_t
i;
assert(quantum_info != (QuantumInfo *) NULL);
return(MagickFalse);
quantum_info->extent=extent;
(void) ResetMagickMemory(quantum_info->pixels,0,
- sizeof(*quantum_info->pixels));
- for (i=0; i < (long) quantum_info->number_threads; i++)
+ quantum_info->number_threads*sizeof(*quantum_info->pixels));
+ for (i=0; i < (ssize_t) quantum_info->number_threads; i++)
{
quantum_info->pixels[i]=(unsigned char *) AcquireQuantumMemory(extent+1,
sizeof(**quantum_info->pixels));
*/
static void DestroyQuantumPixels(QuantumInfo *quantum_info)
{
- register long
+ register ssize_t
i;
+ ssize_t
+ extent;
+
assert(quantum_info != (QuantumInfo *) NULL);
assert(quantum_info->signature == MagickSignature);
assert(quantum_info->pixels != (unsigned char **) NULL);
- for (i=0; i < (long) quantum_info->number_threads; i++)
- {
- assert(quantum_info->pixels[i][quantum_info->extent] == QuantumSignature);
- quantum_info->pixels[i]=(unsigned char *) RelinquishMagickMemory(
- quantum_info->pixels[i]);
- }
+ extent=(ssize_t) quantum_info->extent;
+ for (i=0; i < (ssize_t) quantum_info->number_threads; i++)
+ if (quantum_info->pixels[i] != (unsigned char *) NULL)
+ {
+ /*
+ Did we overrun our quantum buffer?
+ */
+ assert(quantum_info->pixels[i][extent] == QuantumSignature);
+ quantum_info->pixels[i]=(unsigned char *) RelinquishMagickMemory(
+ quantum_info->pixels[i]);
+ }
quantum_info->pixels=(unsigned char **) RelinquishMagickMemory(
quantum_info->pixels);
}
case GrayAlphaQuantum: packet_size=2; break;
case IndexAlphaQuantum: packet_size=2; break;
case RGBQuantum: packet_size=3; break;
+ case BGRQuantum: packet_size=3; break;
case RGBAQuantum: packet_size=4; break;
- case BGRAQuantum: packet_size=4; break;
case RGBOQuantum: packet_size=4; break;
+ case BGRAQuantum: packet_size=4; break;
case CMYKQuantum: packet_size=4; break;
case CMYKAQuantum: packet_size=5; break;
default: break;
return;
option=GetImageOption(image_info,"quantum:format");
if (option != (char *) NULL)
- quantum_info->format=(QuantumFormatType) ParseMagickOption(
+ quantum_info->format=(QuantumFormatType) ParseCommandOption(
MagickQuantumFormatOptions,MagickFalse,option);
option=GetImageOption(image_info,"quantum:minimum");
if (option != (char *) NULL)
*/
MagickExport unsigned char *GetQuantumPixels(const QuantumInfo *quantum_info)
{
- long
- id;
+ const int
+ id = GetOpenMPThreadId();
assert(quantum_info != (QuantumInfo *) NULL);
assert(quantum_info->signature == MagickSignature);
- id=GetOpenMPThreadId();
return(quantum_info->pixels[id]);
}
\f
% The format of the SetQuantumDepth method is:
%
% MagickBooleanType SetQuantumDepth(const Image *image,
-% QuantumInfo *quantum_info,const unsigned long depth)
+% QuantumInfo *quantum_info,const size_t depth)
%
% A description of each parameter follows:
%
%
*/
MagickExport MagickBooleanType SetQuantumDepth(const Image *image,
- QuantumInfo *quantum_info,const unsigned long depth)
+ QuantumInfo *quantum_info,const size_t depth)
{
MagickBooleanType
status;
if (quantum_info->pixels != (unsigned char **) NULL)
DestroyQuantumPixels(quantum_info);
status=AcquireQuantumPixels(quantum_info,(6+quantum_info->pad)*image->columns*
- ((quantum_info->depth+7)/8)); /* estimate for CMYKA + RLE byte */
+ ((quantum_info->depth+7)/8)); /* allow for CMYKA + RLE byte + pad */
return(status);
}
\f
% The format of the SetQuantumPad method is:
%
% MagickBooleanType SetQuantumPad(const Image *image,
-% QuantumInfo *quantum_info,const unsigned long pad)
+% QuantumInfo *quantum_info,const size_t pad)
%
% A description of each parameter follows:
%
%
*/
MagickExport MagickBooleanType SetQuantumPad(const Image *image,
- QuantumInfo *quantum_info,const unsigned long pad)
+ QuantumInfo *quantum_info,const size_t pad)
{
assert(image != (Image *) NULL);
assert(image->signature == MagickSignature);
% The format of the SetQuantumQuantum method is:
%
% void SetQuantumQuantum(QuantumInfo *quantum_info,
-% const unsigned long quantum)
+% const size_t quantum)
%
% A description of each parameter follows:
%
%
*/
MagickExport void SetQuantumQuantum(QuantumInfo *quantum_info,
- const unsigned long quantum)
+ const size_t quantum)
{
assert(quantum_info != (QuantumInfo *) NULL);
assert(quantum_info->signature == MagickSignature);