From f5c23ca20811c62c87c35c0b45f74572b0b77955 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 1 May 2010 17:04:38 +0000
Subject: [PATCH] Fix leakage of proc-related storage in plpython's inline
 handler. Per report from Andres Freund.

---
 src/pl/plpython/plpython.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c
index e4c32eb33a3..7ddc223dfd4 100644
--- a/src/pl/plpython/plpython.c
+++ b/src/pl/plpython/plpython.c
@@ -1,7 +1,7 @@
 /**********************************************************************
  * plpython.c - python as a procedural language for PostgreSQL
  *
- *	$PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.142 2010/04/30 19:15:45 tgl Exp $
+ *	$PostgreSQL: pgsql/src/pl/plpython/plpython.c,v 1.143 2010/05/01 17:04:38 tgl Exp $
  *
  *********************************************************************
  */
@@ -541,12 +541,15 @@ plpython_inline_handler(PG_FUNCTION_ARGS)
 	}
 	PG_CATCH();
 	{
+		PLy_procedure_delete(proc);
 		PLy_curr_procedure = save_curr_proc;
 		PyErr_Clear();
 		PG_RE_THROW();
 	}
 	PG_END_TRY();
 
+	PLy_procedure_delete(proc);
+
 	/* Pop the error context stack */
 	error_context_stack = plerrcontext.previous;
 
@@ -1664,6 +1667,7 @@ PLy_procedure_delete(PLyProcedure *proc)
 	}
 	if (proc->argnames)
 		PLy_free(proc->argnames);
+	PLy_free(proc);
 }
 
 /*
-- 
GitLab