summaryrefslogtreecommitdiff
path: root/src/backend/rewrite/rewriteHandler.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2002-12-17 01:18:35 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2002-12-17 01:18:35 +0000
commite932a724a4a372c7db21ce7bf40250576b085041 (patch)
tree02e45ca5656b4838336b1b2b6e9e31cea2f721dc /src/backend/rewrite/rewriteHandler.c
parent9f76d0d926ffe72e32248b7c79f585c47e643981 (diff)
downloadpostgresql-e932a724a4a372c7db21ce7bf40250576b085041.tar.gz
To suppress memory leakage in long-lived Lists, lremove() should pfree
the cons cell it's deleting from the list. Do this, and fix a few callers that were bogusly assuming it wouldn't free the cons cell.
Diffstat (limited to 'src/backend/rewrite/rewriteHandler.c')
-rw-r--r--src/backend/rewrite/rewriteHandler.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c
index d0badcc154..c19d15b4f0 100644
--- a/src/backend/rewrite/rewriteHandler.c
+++ b/src/backend/rewrite/rewriteHandler.c
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.114 2002/12/12 15:49:40 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/rewrite/rewriteHandler.c,v 1.115 2002/12/17 01:18:32 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -205,9 +205,11 @@ adjustJoinTreeList(Query *parsetree, bool removert, int rt_index)
{
RangeTblRef *rtr = lfirst(jjt);
- if (IsA(rtr, RangeTblRef) &&rtr->rtindex == rt_index)
+ if (IsA(rtr, RangeTblRef) &&
+ rtr->rtindex == rt_index)
{
newjointree = lremove(rtr, newjointree);
+ /* foreach is safe because we exit loop after lremove... */
break;
}
}