From: Peter Eisentraut Date: Tue, 18 Jan 2011 21:27:53 +0000 (+0200) Subject: Use palloc in TopMemoryContext instead of malloc X-Git-Tag: REL9_1_ALPHA4~424 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=59ea9ef9aa216d0bc718539cd5622628943d3f21;p=postgresql Use palloc in TopMemoryContext instead of malloc As discussed, even if the PL needs a permanent memory location, it should use palloc, not malloc. It also makes error handling easier. Jan UrbaƄski --- diff --git a/src/pl/plpython/plpython.c b/src/pl/plpython/plpython.c index 6f31501c7a..f2702ff4e9 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); } /*