1
0
mirror of https://gitlab.gnome.org/GNOME/libxml2.git synced 2025-07-07 12:21:17 +03:00

do not provide functions used as destructor of classes as public methods

* python/generator.py: do not provide functions used as destructor
  of classes as public methods to avoid double-free problem like
  in bug #145185
Daniel
This commit is contained in:
Daniel Veillard
2004-07-01 09:36:26 +00:00
parent 96d2effc73
commit d69cc8174e
4 changed files with 252 additions and 241 deletions

View File

@ -1037,17 +1037,25 @@ def buildWrappers():
classes.write(" self.%s = None\n" % ref[1])
classes.write(" if _obj != None:self._o = _obj;return\n")
classes.write(" self._o = None\n\n");
destruct=None
if classes_destructors.has_key(classname):
classes.write(" def __del__(self):\n")
classes.write(" if self._o != None:\n")
classes.write(" libxml2mod.%s(self._o)\n" %
classes_destructors[classname]);
classes.write(" self._o = None\n\n");
destruct=classes_destructors[classname]
flist = function_classes[classname]
flist.sort(functionCompare)
oldfile = ""
for info in flist:
(index, func, name, ret, args, file) = info
#
# Do not provide as method the destructors for the class
# to avoid double free
#
if name == destruct:
continue;
if file != oldfile:
if file == "python_accessor":
classes.write(" # accessors for %s\n" % (classname))