18 #ifndef MAGICKCORE_MEMORY_H 19 #define MAGICKCORE_MEMORY_H 23 #define MAGICK_INT_MAX (INT_MAX) 24 #define MAGICK_PTRDIFF_MAX (PTRDIFF_MAX) 25 #define MAGICK_PTRDIFF_MIN (-PTRDIFF_MAX-1) 26 #define MAGICK_SIZE_MAX (SIZE_MAX) 27 #define MAGICK_SSIZE_MAX (SSIZE_MAX) 28 #define MAGICK_SSIZE_MIN (-SSIZE_MAX-1) 29 #define MAGICK_UCHAR_MAX (UCHAR_MAX) 30 #define MAGICK_UINT_MAX (UINT_MAX) 31 #define MAGICK_ULONG_MAX (ULONG_MAX) 32 #define MAGICK_USHORT_MAX (USHRT_MAX) 34 #if defined(__cplusplus) || defined(c_plusplus) 42 *(*AcquireMemoryHandler)(size_t) magick_alloc_size(1),
43 (*DestroyMemoryHandler)(
void *),
44 *(*ResizeMemoryHandler)(
void *,size_t) magick_alloc_size(2),
45 *(*AcquireAlignedMemoryHandler)(
const size_t,
const size_t),
46 (*RelinquishAlignedMemoryHandler)(
void *);
49 *AcquireVirtualMemory(
const size_t,
const size_t) magick_alloc_sizes(1,2),
52 extern MagickExport
size_t 53 GetMaxMemoryRequest(
void);
55 extern MagickExport
void 56 *AcquireAlignedMemory(
const size_t,
const size_t)
57 magick_attribute((__malloc__)) magick_alloc_sizes(1,2),
58 *AcquireMagickMemory(
const size_t) magick_attribute((__malloc__))
60 *AcquireCriticalMemory(
const size_t),
61 *AcquireQuantumMemory(
const size_t,
const size_t)
62 magick_attribute((__malloc__)) magick_alloc_sizes(1,2),
63 *CopyMagickMemory(
void *magick_restrict,
const void *magick_restrict,
64 const size_t) magick_attribute((__nonnull__)),
65 DestroyMagickMemory(
void),
66 GetMagickMemoryMethods(AcquireMemoryHandler *,ResizeMemoryHandler *,
67 DestroyMemoryHandler *),
69 *RelinquishAlignedMemory(
void *),
70 *RelinquishMagickMemory(
void *),
71 *ResetMagickMemory(
void *,
int,
const size_t),
72 *ResizeMagickMemory(
void *,
const size_t)
73 magick_attribute((__malloc__)) magick_alloc_size(2),
74 *ResizeQuantumMemory(
void *,
const size_t,
const size_t)
75 magick_attribute((__malloc__)) magick_alloc_sizes(2,3),
76 SetMagickAlignedMemoryMethods(AcquireAlignedMemoryHandler,
77 RelinquishAlignedMemoryHandler),
78 SetMagickMemoryMethods(AcquireMemoryHandler,ResizeMemoryHandler,
79 DestroyMemoryHandler);
81 static inline MagickBooleanType HeapOverflowSanityCheck(
82 const size_t count,
const size_t quantum)
84 if ((count == 0) || (quantum == 0))
86 if (count > (MAGICK_SIZE_MAX/quantum))
94 static inline MagickBooleanType HeapOverflowSanityCheckGetSize(
95 const size_t count,
const size_t quantum,
size_t *
const extent)
97 if ((count == 0) || (quantum == 0))
99 if (count > (SIZE_MAX/quantum))
104 if (extent != (
size_t *) NULL)
105 *extent=count*quantum;
109 #if defined(__cplusplus) || defined(c_plusplus)