From: Cristy Date: Mon, 18 Sep 2017 23:12:27 +0000 (-0400) Subject: Performance optimzation when computing the number of unique image colors X-Git-Tag: 7.0.7-4~34 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1905ed9f87830b006f420b13ca824a4f0d33228e;p=imagemagick Performance optimzation when computing the number of unique image colors --- diff --git a/MagickCore/histogram.c b/MagickCore/histogram.c index 03dc54ea1..5b9d9f877 100644 --- a/MagickCore/histogram.c +++ b/MagickCore/histogram.c @@ -79,6 +79,7 @@ typedef struct _NodeInfo *list; MagickSizeType + extent, number_unique; size_t @@ -261,11 +262,18 @@ static CubeInfo *ClassifyImageColors(const Image *image, else { if (node_info->number_unique == 0) - node_info->list=(PixelInfo *) AcquireMagickMemory( - sizeof(*node_info->list)); + { + node_info->extent=1; + node_info->list=(PixelInfo *) AcquireQuantumMemory( + node_info->extent,sizeof(*node_info->list)); + } else - node_info->list=(PixelInfo *) ResizeQuantumMemory(node_info->list, - (size_t) (i+1),sizeof(*node_info->list)); + if (i >= node_info->extent) + { + node_info->extent<<=1; + node_info->list=(PixelInfo *) ResizeQuantumMemory( + node_info->list,node_info->extent,sizeof(*node_info->list)); + } if (node_info->list == (PixelInfo *) NULL) { (void) ThrowMagickException(exception,GetMagickModule(),