Repair oversights in the mechanism used to store compiled plpgsql functions.
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 30 Jan 2007 22:05:13 +0000 (22:05 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 30 Jan 2007 22:05:13 +0000 (22:05 +0000)
commit35b039a26ca2cdcfae94c5aacd0ac4a0904b5285
tree7feb53ff5b50878413d1e35746866633e5accb65
parent33d78c9e48d8d096f606c169413ca3d56b9c9b2c
Repair oversights in the mechanism used to store compiled plpgsql functions.
The original coding failed (tried to access deallocated memory) if there were
two active call sites (fn_extra pointers) for the same function and the
function definition was updated.  Also, if an update of a recursive function
was detected upon nested entry to the function, the existing compiled version
was summarily deallocated, resulting in crash upon return to the outer
instance.  Problem observed while studying a bug report from Sergiy
Vyshnevetskiy.

Bug does not exist before 8.1 since older versions just leaked the memory of
obsoleted compiled functions, rather than trying to reclaim it.
src/pl/plpgsql/src/pl_comp.c
src/pl/plpgsql/src/pl_handler.c
src/pl/plpgsql/src/plpgsql.h