]> granicus.if.org Git - postgresql/commitdiff
Use palloc in TopMemoryContext instead of malloc
authorPeter Eisentraut <peter_e@gmx.net>
Tue, 18 Jan 2011 21:27:53 +0000 (23:27 +0200)
committerPeter Eisentraut <peter_e@gmx.net>
Tue, 18 Jan 2011 21:27:53 +0000 (23:27 +0200)
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

src/pl/plpython/plpython.c

index 6f31501c7a86c6513b3393bdce10b668d5bb1c4f..f2702ff4e99bfa9f6158a4090d780290992f0456 100644 (file)
@@ -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);
 }
 
 /*