[prev in list] [next in list] [prev in thread] [next in thread]
List: graphicsmagick-commit
Subject: [GM-commit] GraphicsMagick: 2 new changesets
From: GraphicsMagick Commits <graphicsmagick-commit () lists ! sourceforge ! net>
Date: 2020-12-20 16:00:34
Message-ID: mailman.247549.1608503216.1535.graphicsmagick-commit () lists ! sourceforge ! net
[Download RAW message or body]
changeset 90d824a10ed0 in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=90d824a10ed0
summary: _MagickReallocateResourceLimitedMemory(): Add a 'clear' parameter which \
indicates that freshly allocated memory should be zeroed.
changeset 90767e582d9a in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=90767e582d9a
summary: PICT: Use managed memory allocators.
diffstat:
ChangeLog | 11 +++++++
VisualMagick/installer/inc/version.isx | 4 +-
coders/pict.c | 48 +++++++++++++++++-----------------
magick/memory-private.h | 36 ++++++++++++++----------
magick/memory.c | 22 ++++++++++++---
magick/version.h | 4 +-
www/Changelog.html | 12 ++++++++
www/api/memory.html | 4 +-
8 files changed, 91 insertions(+), 50 deletions(-)
diffs (380 lines):
diff -r d0bec4b70329 -r 90767e582d9a ChangeLog
--- a/ChangeLog Sat Dec 19 15:54:34 2020 -0600
+++ b/ChangeLog Sun Dec 20 10:00:30 2020 -0600
@@ -1,3 +1,14 @@
+2020-12-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+
+ * coders/pict.c (ReadPICTImage): Use managed memory allocators.
+ (WritePICTImage): Use managed memory allocators.
+
+ * magick/memory.c (_MagickReallocateResourceLimitedMemory): Add a
+ 'clear' parameter which indicates that freshly allocated memory
+ should be zeroed. Added "Cleared" versions of the private managed
+ memory macros and updated all managed memory macros to exclusively
+ use this function.
+
2020-12-19 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
* Update Automake to 1.16.3 and bootstrap to pick up latest
diff -r d0bec4b70329 -r 90767e582d9a VisualMagick/installer/inc/version.isx
--- a/VisualMagick/installer/inc/version.isx Sat Dec 19 15:54:34 2020 -0600
+++ b/VisualMagick/installer/inc/version.isx Sun Dec 20 10:00:30 2020 -0600
@@ -10,5 +10,5 @@
#define public MagickPackageName "GraphicsMagick"
#define public MagickPackageVersion "1.4"
-#define public MagickPackageVersionAddendum ".020201219"
-#define public MagickPackageReleaseDate "snapshot-20201219"
+#define public MagickPackageVersionAddendum ".020201220"
+#define public MagickPackageReleaseDate "snapshot-20201220"
diff -r d0bec4b70329 -r 90767e582d9a coders/pict.c
--- a/coders/pict.c Sat Dec 19 15:54:34 2020 -0600
+++ b/coders/pict.c Sun Dec 20 10:00:30 2020 -0600
@@ -881,7 +881,7 @@
Allocate pixel and scanline buffer.
*/
allocated_pixels=MagickArraySize(image->rows,row_bytes);
- pixels=MagickAllocateClearedMemory(unsigned char *,allocated_pixels);
+ pixels=MagickAllocateResourceLimitedClearedMemory(unsigned char \
*,allocated_pixels); if (pixels == (unsigned char *) NULL)
{
ThrowException(&image->exception,ResourceLimitError,MemoryAllocationFailed,
@@ -896,7 +896,7 @@
else
scanline_alloc = 65536U+256U; /* Allocate extra for RLE over-run */
- scanline=MagickAllocateClearedMemory(unsigned char *,scanline_alloc);
+ scanline=MagickAllocateResourceLimitedClearedMemory(unsigned char \
*,scanline_alloc); if (scanline == (unsigned char *) NULL)
{
ThrowException(&image->exception,ResourceLimitError,MemoryAllocationFailed,
@@ -922,7 +922,7 @@
p=ExpandBuffer(expand_buffer,scanline,&number_pixels,bits_per_pixel);
(void) memcpy(q,p,number_pixels);
}
- MagickFreeMemory(scanline);
+ MagickFreeResourceLimitedMemory(scanline);
return(pixels);
}
/*
@@ -990,13 +990,13 @@
j+=bytes_per_pixel+1;
}
}
- MagickFreeMemory(scanline);
+ MagickFreeResourceLimitedMemory(scanline);
return (pixels);
decode_error_exit:
- MagickFreeMemory(scanline);
- MagickFreeMemory(pixels);
+ MagickFreeResourceLimitedMemory(scanline);
+ MagickFreeResourceLimitedMemory(pixels);
return (unsigned char *) NULL;
}
@@ -1690,7 +1690,7 @@
image->columns,image->rows))
break;
}
- MagickFreeMemory(pixels);
+ MagickFreeResourceLimitedMemory(pixels);
if (tile_image->exception.severity > image->exception.severity)
CopyException(&image->exception,&tile_image->exception);
if ((tile_image->exception.severity < ErrorException) && (jpeg == \
False)) @@ -1732,7 +1732,7 @@
length-=Min(4,length);
if (length == 0)
break;
- info=MagickAllocateMemory(unsigned char *,length);
+ info=MagickAllocateResourceLimitedMemory(unsigned char *,length);
if (info == (unsigned char *) NULL)
break;
(void) ReadBlob(image,length,info);
@@ -1744,7 +1744,7 @@
break;
if (SetImageProfile(image,"ICM",info,length) == MagickFail)
ThrowPICTReaderException(ResourceLimitError,MemoryAllocationFailed,image);
- MagickFreeMemory(info);
+ MagickFreeResourceLimitedMemory(info);
break;
}
case 0x1f2:
@@ -1753,13 +1753,13 @@
break;
if (SetImageProfile(image,"IPTC",info,length) == MagickFail)
ThrowPICTReaderException(ResourceLimitError,MemoryAllocationFailed,image);
- MagickFreeMemory(info);
+ MagickFreeResourceLimitedMemory(info);
break;
}
default:
break;
}
- MagickFreeMemory(info);
+ MagickFreeResourceLimitedMemory(info);
break;
}
default:
@@ -1814,7 +1814,7 @@
for (i=0; i < 122; i++)
if (ReadBlobByte(image) == EOF)
ThrowPICTReaderException(CorruptImageError,UnexpectedEndOfFile,image);
- if ((blob_alloc=MagickAllocateMemory(void *,blob_alloc_size)) == (void \
*) NULL) + if ((blob_alloc=MagickAllocateResourceLimitedMemory(void \
*,blob_alloc_size)) == (void *) NULL)
ThrowPICTReaderException(ResourceLimitError,MemoryAllocationFailed,image);
blob=blob_alloc;
clone_info=CloneImageInfo(image_info);
@@ -1823,7 +1823,7 @@
(void) strlcpy(clone_info->filename,"JPEG:",sizeof(clone_info->filename));
if (ReadBlobZC(image,blob_alloc_size,&blob) != blob_alloc_size)
{
- MagickFreeMemory(blob_alloc);
+ MagickFreeResourceLimitedMemory(blob_alloc);
ThrowPICTReaderException(CorruptImageError,UnexpectedEndOfFile,image);
}
if (blob != blob_alloc)
@@ -1835,7 +1835,7 @@
tile_image=BlobToImage(clone_info, blob, blob_alloc_size, \
&image->exception ); DestroyImageInfo(clone_info);
clone_info=(ImageInfo *) NULL;
- MagickFreeMemory(blob_alloc);
+ MagickFreeResourceLimitedMemory(blob_alloc);
}
if (tile_image == (Image *) NULL)
continue;
@@ -2021,9 +2021,9 @@
*/
#define LiberatePICTAllocations() \
{ \
- MagickFreeMemory(buffer); \
- MagickFreeMemory(packed_scanline); \
- MagickFreeMemory(scanline); \
+ MagickFreeResourceLimitedMemory(buffer); \
+ MagickFreeResourceLimitedMemory(packed_scanline); \
+ MagickFreeResourceLimitedMemory(scanline); \
}
#define ThrowPICTWriterException(code_,reason_,image_) \
{ \
@@ -2176,9 +2176,9 @@
if ((row_bytes >= (size_t) SIZE_MAX/2) || (bytes_per_line == 0) ||
(bytes_per_line > 0x7FFFU) || ((row_bytes+MaxCount*2U) >= 0x7FFFU))
ThrowPICTWriterException(CoderError,UnsupportedNumberOfColumns,image);
- buffer=MagickAllocateMemory(unsigned char *,PictInfoSize);
- packed_scanline=MagickAllocateMemory(unsigned char *,(row_bytes+MaxCount*2U));
- scanline=MagickAllocateMemory(unsigned char *,row_bytes);
+ buffer=MagickAllocateResourceLimitedMemory(unsigned char *,PictInfoSize);
+ packed_scanline=MagickAllocateResourceLimitedMemory(unsigned char \
*,(row_bytes+MaxCount*2U)); + scanline=MagickAllocateResourceLimitedMemory(unsigned \
char *,row_bytes); if ((buffer == (unsigned char *) NULL) ||
(packed_scanline == (unsigned char *) NULL) ||
(scanline == (unsigned char *) NULL))
@@ -2328,7 +2328,7 @@
(void) WriteBlob(image,length,blob);
if (length & 0x01)
(void) WriteBlobByte(image,'\0');
- MagickFreeMemory(blob);
+ MagickFreeResourceLimitedMemory(blob);
}
/*
Write picture opcode, row bytes, and picture bounding box, and version.
@@ -2473,9 +2473,9 @@
offset=TellBlob(image);
(void) SeekBlob(image,512,SEEK_SET);
(void) WriteBlobMSBShort(image,(unsigned long) offset);
- MagickFreeMemory(scanline);
- MagickFreeMemory(packed_scanline);
- MagickFreeMemory(buffer);
+ MagickFreeResourceLimitedMemory(scanline);
+ MagickFreeResourceLimitedMemory(packed_scanline);
+ MagickFreeResourceLimitedMemory(buffer);
CloseBlob(image);
return(True);
}
diff -r d0bec4b70329 -r 90767e582d9a magick/memory-private.h
--- a/magick/memory-private.h Sat Dec 19 15:54:34 2020 -0600
+++ b/magick/memory-private.h Sun Dec 20 10:00:30 2020 -0600
@@ -16,10 +16,10 @@
MagickArraySize(const size_t count,const size_t size) MAGICK_FUNC_CONST;
extern MagickExport
- void *_MagickReallocateResourceLimitedMemory(void *p,size_t count, size_t size);
+ void *_MagickReallocateResourceLimitedMemory(void *p,const size_t count,const \
size_t size,const MagickBool clear);
extern MagickExport
- void *_MagickAllocateResourceLimitedMemory(size_t size);
+ void *_MagickAllocateResourceLimitedMemory(const size_t size);
extern MagickExport
void _MagickFreeResourceLimitedMemory(void *p);
@@ -52,27 +52,33 @@
}
/*
- Allocate memory (resource limited)
+ Allocate/Reallocate/Free memory (resource limited)
*/
-#define MagickAllocateResourceLimitedMemory(type,size) \
- ((((size) != ((size_t) (size))) || (size == 0)) ? ((type) 0) : \
- ((type) _MagickAllocateResourceLimitedMemory((size_t) (size))))
+#define MagickAllocateResourceLimitedMemory(type,size) \
+ ((((size) != ((size_t) (size))) || (size == 0)) ? ((type) 0) : \
+ ((type) _MagickReallocateResourceLimitedMemory(0,1,(size_t) (size),MagickFalse)))
-#define MagickAllocateResourceLimitedArray(type,count,size) \
- ((type) _MagickReallocateResourceLimitedMemory(0,(size_t) (count),(size_t) \
(size))) +#define MagickAllocateResourceLimitedClearedMemory(type,size) \
+ ((((size) != ((size_t) (size))) || (size == 0)) ? ((type) 0) : \
+ ((type) _MagickReallocateResourceLimitedMemory(0,1,(size_t) (size),MagickTrue)))
+
+#define MagickAllocateResourceLimitedArray(type,count,size) \
+ ((type) _MagickReallocateResourceLimitedMemory(0,(size_t) (count),(size_t) \
(size),MagickFalse)) +
+#define MagickAllocateResourceLimitedClearedArray(type,count,size) \
+ ((type) _MagickReallocateResourceLimitedMemory(0,(size_t) (count),(size_t) \
(size),MagickTrue))
#define MagickReallocateResourceLimitedMemory(type,memory,size) \
- ((type) _MagickReallocateResourceLimitedMemory(memory,1,(size_t) (size)))
+ ((type) _MagickReallocateResourceLimitedMemory(memory,1,(size_t) \
(size),MagickFalse))
#define MagickReallocateResourceLimitedArray(type,memory,count,size) \
- ((type) _MagickReallocateResourceLimitedMemory(memory,(size_t) (count),(size_t) \
(size))) + ((type) _MagickReallocateResourceLimitedMemory(memory,(size_t) \
(count),(size_t) (size),MagickFalse)) +
+#define MagickReallocateResourceLimitedClearedArray(type,memory,count,size) \
+ ((type) _MagickReallocateResourceLimitedMemory(memory,(size_t) (count),(size_t) \
(size),MagickTrue))
#define MagickFreeResourceLimitedMemory(memory) \
- { \
- void *_magick_mp=memory; \
- _MagickFreeResourceLimitedMemory(_magick_mp); \
- memory=0; \
- }
+ memory=_MagickReallocateResourceLimitedMemory(memory,0,0,MagickFalse);
/*
Reallocate memory using provided pointer. If reallocation fails
diff -r d0bec4b70329 -r 90767e582d9a magick/memory.c
--- a/magick/memory.c Sat Dec 19 15:54:34 2020 -0600
+++ b/magick/memory.c Sun Dec 20 10:00:30 2020 -0600
@@ -639,7 +639,8 @@
/*
Reallocate resource-limited array memory based on pointer to
- existing allocation, object count, and object size.
+ existing allocation, object count, and object size. Freshly
+ allocated memory is cleared to zero if the clear flag is set.
This works like MagickRealloc() except for supporting count and size
arguments similar to calloc(). GNU libc has a reallocarray()
@@ -652,7 +653,10 @@
Linux malloc produces allocations aligned to 16-bytes.
*/
-MagickExport void *_MagickReallocateResourceLimitedMemory(void *p,size_t count, \
size_t size) +MagickExport void *_MagickReallocateResourceLimitedMemory(void *p,
+ const size_t count,
+ const size_t size,
+ const MagickBool clear)
{
MagickMemoryResource_T memory_resource;
size_t size_diff;
@@ -714,6 +718,10 @@
\
new_size+sizeof(MagickMemoryResource_T)); if (realloc_memory != 0)
{
+ if (clear)
+ (void) memset(UserLandPointerGivenBaseAlloc(realloc_memory)+
+ memory_resource.alloc_size,0,size_diff);
+
memory_resource.memory = realloc_memory;
memory_resource.alloc_size = new_size;
memory_resource.alloc_size_real = new_size;
@@ -729,6 +737,10 @@
}
else
{
+ if (clear)
+ (void) \
memset(UserLandPointerGivenBaseAlloc(memory_resource.memory)+ + \
memory_resource.alloc_size,0,size_diff); +
/* Re-allocation is not required */
memory_resource.alloc_size = new_size;
}
@@ -772,9 +784,9 @@
Memory must be released using MagickFreeMemoryResource().
*/
-MagickExport void *_MagickAllocateResourceLimitedMemory(size_t size)
+MagickExport void *_MagickAllocateResourceLimitedMemory(const size_t size)
{
- return _MagickReallocateResourceLimitedMemory(0,1,size);
+ return _MagickReallocateResourceLimitedMemory(0,1,size,MagickFalse);
}
/*
@@ -785,5 +797,5 @@
*/
MagickExport void _MagickFreeResourceLimitedMemory(void *p)
{
- _MagickReallocateResourceLimitedMemory(p,0,0);
+ _MagickReallocateResourceLimitedMemory(p,0,0,MagickFalse);
}
diff -r d0bec4b70329 -r 90767e582d9a magick/version.h
--- a/magick/version.h Sat Dec 19 15:54:34 2020 -0600
+++ b/magick/version.h Sun Dec 20 10:00:30 2020 -0600
@@ -38,8 +38,8 @@
#define MagickLibVersion 0x242100
#define MagickLibVersionText "1.4"
#define MagickLibVersionNumber 24,21,0
-#define MagickChangeDate "20201219"
-#define MagickReleaseDate "snapshot-20201219"
+#define MagickChangeDate "20201220"
+#define MagickReleaseDate "snapshot-20201220"
/*
The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines
diff -r d0bec4b70329 -r 90767e582d9a www/Changelog.html
--- a/www/Changelog.html Sat Dec 19 15:54:34 2020 -0600
+++ b/www/Changelog.html Sun Dec 20 10:00:30 2020 -0600
@@ -35,6 +35,18 @@
<div class="document">
+<p>2020-12-20 Bob Friesenhahn <<a class="reference external" \
href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span> \
4;</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p>
+<blockquote>
+<ul class="simple">
+<li>coders/pict.c (ReadPICTImage): Use managed memory allocators.
+(WritePICTImage): Use managed memory allocators.</li>
+<li>magick/memory.c (_MagickReallocateResourceLimitedMemory): Add a
+'clear' parameter which indicates that freshly allocated memory
+should be zeroed. Added "Cleared" versions of the private managed
+memory macros and updated all managed memory macros to exclusively
+use this function.</li>
+</ul>
+</blockquote>
<p>2020-12-19 Bob Friesenhahn <<a class="reference external" \
href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span> \
4;</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p>
<blockquote>
<ul class="simple">
diff -r d0bec4b70329 -r 90767e582d9a www/api/memory.html
--- a/www/api/memory.html Sat Dec 19 15:54:34 2020 -0600
+++ b/www/api/memory.html Sun Dec 20 10:00:30 2020 -0600
@@ -3,7 +3,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.13.1: http://docutils.sourceforge.net/" \
/> +<meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" \
/> <title>memory</title>
<link rel="stylesheet" href="../docutils-api.css" type="text/css" />
</head>
@@ -37,7 +37,7 @@
<h2 class="subtitle" id="memory-allocation-deallocation-functions">Memory \
allocation/deallocation functions</h2>
<div class="contents topic" id="contents">
-<p class="topic-title first">Contents</p>
+<p class="topic-title">Contents</p>
<ul class="simple">
<li><a class="reference internal" href="#magickallocfunctions" \
id="id15">MagickAllocFunctions</a></li> <li><a class="reference internal" \
href="#magickmalloc" id="id16">MagickMalloc</a></li>
_______________________________________________
Graphicsmagick-commit mailing list
Graphicsmagick-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/graphicsmagick-commit
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic