diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2012-11-13 14:44:35 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2012-11-13 14:45:43 -0500 |
commit | 5355e39cf53aab9430fc6cd68dd3017b36c9315c (patch) | |
tree | 4b060635c2afac4aa3c622bce28279cc07e500ff /src/backend/regex/regprefix.c | |
parent | 31541778b612fd59257a2bf571229f400d35ecf0 (diff) | |
download | postgresql-5355e39cf53aab9430fc6cd68dd3017b36c9315c.tar.gz postgresql-5355e39cf53aab9430fc6cd68dd3017b36c9315c.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/regex/regprefix.c')
0 files changed, 0 insertions, 0 deletions