Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/pl/plpython/plpython.c')
-rw-r--r--src/pl/plpython/plpython.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c
index 6f31501c7a8..f2702ff4e99 100644
--- a/src/pl/plpython/plpython.c
+++ b/src/pl/plpython/plpython.c
@@ -1605,7 +1605,7 @@ PLy_procedure_compile(PLyProcedure *proc, const char *src)
*/
msrc = PLy_procedure_munge_source(proc->pyname, src);
crv = PyRun_String(msrc, Py_file_input, proc->globals, NULL);
- free(msrc);
+ pfree(msrc);
if (crv != NULL)
{
@@ -1642,7 +1642,7 @@ PLy_procedure_munge_source(const char *name, const char *src)
*/
mlen = (strlen(src) * 2) + strlen(name) + 16;
- mrc = PLy_malloc(mlen);
+ mrc = palloc(mlen);
plen = snprintf(mrc, mlen, "def %s():\n\t", name);
Assert(plen >= 0 && plen < mlen);
@@ -3664,13 +3664,8 @@ PLy_traceback(int *xlevel)
static void *
PLy_malloc(size_t bytes)
{
- void *ptr = malloc(bytes);
-
- if (ptr == NULL)
- ereport(FATAL,
- (errcode(ERRCODE_OUT_OF_MEMORY),
- errmsg("out of memory")));
- return ptr;
+ /* We need our allocations to be long-lived, so use TopMemoryContext */
+ return MemoryContextAlloc(TopMemoryContext, bytes);
}
static void *
@@ -3699,7 +3694,7 @@ PLy_strdup(const char *str)
static void
PLy_free(void *ptr)
{
- free(ptr);
+ pfree(ptr);
}
/*