aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/arrayfuncs.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2012-11-13 14:44:28 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2012-11-13 14:45:26 -0500
commit273986bf0d39e5166eb15ba42ebff4803e23a688 (patch)
treebd102359314226b197e5ba71d4825d485d8133e9 /src/backend/utils/adt/arrayfuncs.c
parentd9fad1076da4f3686b16e7c9f137118a3156a43a (diff)
downloadpostgresql-273986bf0d39e5166eb15ba42ebff4803e23a688.tar.gz
postgresql-273986bf0d39e5166eb15ba42ebff4803e23a688.zip
Fix memory leaks in record_out() and record_send().
record_out() leaks memory: it fails to free the strings returned by the per-column output functions, and also is careless about detoasted values. This results in a query-lifespan memory leakage when returning composite values to the client, because printtup() runs the output functions in the query-lifespan memory context. Fix it to handle these issues the same way printtup() does. Also fix a similar leakage in record_send(). (At some point we might want to try to run output functions in shorter-lived memory contexts, so that we don't need a zero-leakage policy for them. But that would be a significantly more invasive patch, which doesn't seem like material for back-patching.) In passing, use appendStringInfoCharMacro instead of appendStringInfoChar in the innermost data-copying loop of record_out, to try to shave a few cycles from this function's runtime. Per trouble report from Carlos Henrique Reimer. Back-patch to all supported versions.
Diffstat (limited to 'src/backend/utils/adt/arrayfuncs.c')
0 files changed, 0 insertions, 0 deletions