Commit cef465732 for imagemagick.org

commit cef465732ef78ec1dc13a923b93b199018f0cbeb
Author: Cristy <urban-warrior@imagemagick.org>
Date:   Sat May 2 15:26:46 2026 -0400

    free primitive info text if allocation fails

diff --git a/MagickCore/draw.c b/MagickCore/draw.c
index 423eab947..2025f3547 100644
--- a/MagickCore/draw.c
+++ b/MagickCore/draw.c
@@ -2283,6 +2283,7 @@ static inline MagickBooleanType CheckPrimitiveExtent(MVGInfo *mvg_info,
   const double pad)
 {
   PrimitiveInfo
+    *clone_info,
     *primitive_info;

   size_t
@@ -2302,15 +2303,20 @@ static inline MagickBooleanType CheckPrimitiveExtent(MVGInfo *mvg_info,
   /*
     Attempt to grow the primitive_info array.
   */
-  primitive_info=(PrimitiveInfo *) ResizeQuantumMemory(
-    *mvg_info->primitive_info,extent,sizeof(PrimitiveInfo));
-  if (primitive_info == (PrimitiveInfo *) NULL)
+  primitive_info=(*mvg_info->primitive_info);
+  clone_info=(PrimitiveInfo *) ResizeQuantumMemory(primitive_info,extent,
+    sizeof(PrimitiveInfo));
+  if (clone_info != (PrimitiveInfo *) NULL)
+    primitive_info=clone_info;
+  else
     {
       /*
-        Allocation failed: reset to minimal safe state
+        Allocation failed: reset to minimal safe state.
       */
-      ThrowMagickException(mvg_info->exception,GetMagickModule(),
-        ResourceLimitError,"MemoryAllocationFailed","`%s'","");
+      for (i=0; primitive_info[i].primitive != UndefinedPrimitive; i++)
+        if (primitive_info[i].text != (char *) NULL)
+          primitive_info[i].text=DestroyString(primitive_info[i].text);
+      primitive_info=(PrimitiveInfo *) RelinquishMagickMemory(primitive_info);
       primitive_info=(PrimitiveInfo *) AcquireCriticalMemory((size_t)
         (PrimitiveExtentPad+1)*sizeof(PrimitiveInfo));
       (void) memset(primitive_info,0,(size_t) (PrimitiveExtentPad+1)*
@@ -2318,6 +2324,8 @@ static inline MagickBooleanType CheckPrimitiveExtent(MVGInfo *mvg_info,
       *mvg_info->primitive_info=primitive_info;
       *mvg_info->extent=(size_t) (PrimitiveExtentPad+1);
       mvg_info->offset=0;
+      ThrowMagickException(mvg_info->exception,GetMagickModule(),
+        ResourceLimitError,"MemoryAllocationFailed","`%s'","");
       return(MagickFalse);
     }
   /*