diff options
author | Robert Haas <rhaas@postgresql.org> | 2012-08-07 16:59:42 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2012-08-07 17:00:16 -0400 |
commit | eea65943c605215456d0f55f65e1ec802f5e221e (patch) | |
tree | e247f2d54dfb2e170a96cd786e8468a040f81433 /src | |
parent | ac78c4178bec7b252d22a39515ad6efd6c1a7d7e (diff) | |
download | postgresql-eea65943c605215456d0f55f65e1ec802f5e221e.tar.gz postgresql-eea65943c605215456d0f55f65e1ec802f5e221e.zip |
Fix memory leaks in event trigger code.
Spotted by Jeff Davis.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/utils/cache/evtcache.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/backend/utils/cache/evtcache.c b/src/backend/utils/cache/evtcache.c index 565dc449d16..fc9f694e5a7 100644 --- a/src/backend/utils/cache/evtcache.c +++ b/src/backend/utils/cache/evtcache.c @@ -84,7 +84,7 @@ BuildEventTriggerCache(void) * the cache failed, then there might be some junk lying around * that we want to reclaim. */ - MemoryContextReset(EventTriggerCacheContext); + MemoryContextResetAndDeleteChildren(EventTriggerCacheContext); } else { @@ -119,8 +119,9 @@ BuildEventTriggerCache(void) ctl.keysize = sizeof(EventTriggerEvent); ctl.entrysize = sizeof(EventTriggerCacheEntry); ctl.hash = tag_hash; + ctl.hcxt = EventTriggerCacheContext; cache = hash_create("Event Trigger Cache", 32, &ctl, - HASH_ELEM | HASH_FUNCTION); + HASH_ELEM | HASH_FUNCTION | HASH_CONTEXT); /* * Prepare to scan pg_event_trigger in name order. We use an MVCC @@ -237,6 +238,6 @@ DecodeTextArrayToCString(Datum array, char ***cstringp) static void InvalidateEventCacheCallback(Datum arg, int cacheid, uint32 hashvalue) { - MemoryContextReset(EventTriggerCacheContext); + MemoryContextResetAndDeleteChildren(EventTriggerCacheContext); EventTriggerCache = NULL; } |