From fc9d2252afcdb43a26cab90969f6c42bd97c277c Mon Sep 17 00:00:00 2001
From: "Andrew M. Kuchling" <amk@amk.ca>
Date: Fri, 18 Feb 2000 19:16:45 +0000
Subject: [PATCH] Patch from Vladimir Marangozov <marangoz@python.inrialpes.fr>
 	The same problem (mixed mallocs) exists for the pcre stack. 	The
 buffers md->... are allocated via PyMem_RESIZE in grow_stack(), 	while
 in free_stack() they are released with free() instead of 	PyMem_DEL().

---
 Modules/pypcre.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Modules/pypcre.c b/Modules/pypcre.c
index 976eb21fc3..468751d2c8 100644
--- a/Modules/pypcre.c
+++ b/Modules/pypcre.c
@@ -3057,12 +3057,12 @@ return TRUE;
 static int free_stack(match_data *md)
 {
 /* Free any stack space that was allocated by the call to match(). */
-if (md->off_num)    free(md->off_num); 
-if (md->offset_top) free(md->offset_top); 
-if (md->r1)         free(md->r1); 
-if (md->r2)         free(md->r2); 
-if (md->eptr)       free((char *)md->eptr); 
-if (md->ecode)      free((char *)md->ecode);
+if (md->off_num)    PyMem_DEL(md->off_num); 
+if (md->offset_top) PyMem_DEL(md->offset_top); 
+if (md->r1)         PyMem_DEL(md->r1); 
+if (md->r2)         PyMem_DEL(md->r2); 
+if (md->eptr)       PyMem_DEL((char *)md->eptr); 
+if (md->ecode)      PyMem_DEL((char *)md->ecode);
 return 0;
 }
 
-- 
2.40.0