]> granicus.if.org Git - postgresql/commit
Revise memory management for libxml calls. Instead of keeping libxml's data
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 15 Jan 2008 18:57:00 +0000 (18:57 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 15 Jan 2008 18:57:00 +0000 (18:57 +0000)
commitac12412edec900fea429d5b9bf9e58990d9f4533
treeb650ed9f0e8248986b72dba615c9ed31bfa0a19d
parentdeb7deda2661c86606b682b485c19315cef0eaeb
Revise memory management for libxml calls.  Instead of keeping libxml's data
in whichever context happens to be current during a call of an xml.c function,
use a dedicated context that will not go away until we explicitly delete it
(which we do at transaction end or subtransaction abort).  This makes recovery
after an error much simpler --- we don't have to individually delete the data
structures created by libxml.  Also, we need to initialize and cleanup libxml
only once per transaction (if there's no error) instead of once per function
call, so it should be a bit faster.  We'll need to keep an eye out for
intra-transaction memory leaks, though.  Alvaro and Tom.
src/backend/access/transam/xact.c
src/backend/utils/adt/xml.c
src/include/utils/xml.h