summaryrefslogtreecommitdiff
path: root/ext/NDBM_File
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2010-10-21 07:58:11 +0200
committerNicholas Clark <nick@ccl4.org>2010-10-21 08:31:16 +0200
commit11d95c64b33c4850567d44b5bbaeaa74eeff1525 (patch)
tree77a66d9bfb9eff720fc283b8dc94b14a0695867e /ext/NDBM_File
parenta3ccc6f96faf75718ef71a5bfdce27781e7ae31a (diff)
downloadperl-11d95c64b33c4850567d44b5bbaeaa74eeff1525.tar.gz
[GNO]DBM_File must free any filter CVs in DESTROY.
They have been leaking these since DBM filters were first added in 1999 by 9fe6733ac5627edd. DB_File and SDBM_File have always correctly freed their filters.
Diffstat (limited to 'ext/NDBM_File')
-rw-r--r--ext/NDBM_File/NDBM_File.xs8
1 files changed, 8 insertions, 0 deletions
diff --git a/ext/NDBM_File/NDBM_File.xs b/ext/NDBM_File/NDBM_File.xs
index aa769ecf9d..84d44cba46 100644
--- a/ext/NDBM_File/NDBM_File.xs
+++ b/ext/NDBM_File/NDBM_File.xs
@@ -80,6 +80,14 @@ ndbm_DESTROY(db)
NDBM_File db
CODE:
dbm_close(db->dbp);
+ if (db->filter_fetch_key)
+ SvREFCNT_dec(db->filter_fetch_key) ;
+ if (db->filter_store_key)
+ SvREFCNT_dec(db->filter_store_key) ;
+ if (db->filter_fetch_value)
+ SvREFCNT_dec(db->filter_fetch_value) ;
+ if (db->filter_store_value)
+ SvREFCNT_dec(db->filter_store_value) ;
safefree(db);
#define ndbm_FETCH(db,key) dbm_fetch(db->dbp,key)