postgres.git / summary / log / commit / refs

commit    eea65943c605215456d0f55f65e1ec802f5e221e
Author:   Robert Haas <rhaas@postgresql.org>
Date:     Tue Aug 07 20:59:42 2012 +0000

    Fix memory leaks in event trigger code.
    
    Spotted by Jeff Davis.


src/backend/utils/cache/evtcache.c | 7 ++++--- 1 file 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; } [parent: ac78c4178bec]