Further fix thinko in plpgsql memory leak fix.
authorTom Lane
Mon, 28 Dec 2020 16:55:23 +0000 (11:55 -0500)
committerTom Lane
Mon, 28 Dec 2020 16:55:23 +0000 (11:55 -0500)
There's a second call of get_eval_mcontext() that should also be
get_stmt_mcontext().  This is actually dead code, since no
interesting allocations happen before switching back to the
original context, but we should keep it in sync with the other
call to forestall possible future bugs.

Discussion: https://postgr.es/m/f075f7be-c654-9aa8-3ffc-e9214622f02a@enterprisedb.com

src/pl/plpgsql/src/pl_exec.c

index 733ad44c74b47a2a63ea7ff06e2dc72917a78570..b9e85a1a0fd28b3dde6e34d4cd42eb189eff5a3d 100644 (file)
@@ -2282,7 +2282,7 @@ exec_stmt_call(PLpgSQL_execstate *estate, PLpgSQL_stmt_call *stmt)
            row->varnos = (int *) palloc(sizeof(int) * list_length(funcargs));
 
            if (!local_plan)
-               MemoryContextSwitchTo(get_eval_mcontext(estate));
+               MemoryContextSwitchTo(get_stmt_mcontext(estate));
 
            /*
             * Examine procedure's argument list.  Each output arg position