diff options
author | Bruce Momjian <bruce@momjian.us> | 1999-03-20 01:13:22 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 1999-03-20 01:13:22 +0000 |
commit | 7d0ab659acf5d6d410f6587f01f73cb842da2847 (patch) | |
tree | 07cceadb7f183820378ce537622256cc46306627 /src/backend/executor/nodeAgg.c | |
parent | 9ede8672815c0673bbbc15eaee736de80d5df675 (diff) | |
download | postgresql-7d0ab659acf5d6d410f6587f01f73cb842da2847.tar.gz postgresql-7d0ab659acf5d6d410f6587f01f73cb842da2847.zip |
Fix for aggregate memory leaks from Erik Riedel.
Diffstat (limited to 'src/backend/executor/nodeAgg.c')
-rw-r--r-- | src/backend/executor/nodeAgg.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/backend/executor/nodeAgg.c b/src/backend/executor/nodeAgg.c index d379077af51..288e16555e7 100644 --- a/src/backend/executor/nodeAgg.c +++ b/src/backend/executor/nodeAgg.c @@ -110,6 +110,7 @@ ExecAgg(Agg *node) isNull2 = FALSE; bool qual_result; + Datum oldVal = (Datum) NULL; /* XXX - so that we can save and free on each iteration - er1p */ /* --------------------- * get state info from node @@ -372,8 +373,10 @@ ExecAgg(Agg *node) */ args[0] = value1[aggno]; args[1] = newVal; + oldVal = value1[aggno]; /* XXX - save so we can free later - er1p */ value1[aggno] = (Datum) fmgr_c(&aggfns->xfn1, (FmgrValues *) args, &isNull1); + pfree(oldVal); /* XXX - new, let's free the old datum - er1p */ Assert(!isNull1); } } |