esx: Fix freeing of heterogeneous lists

Always call the free function of the base type. The base type
function then dynamically dispatches the call to the free function
for the actual type.
This commit is contained in:
Matthias Bolte 2010-07-28 15:42:10 +02:00
parent c38e2f7a39
commit 5cff36e39a
1 changed files with 10 additions and 4 deletions

View File

@ -684,7 +684,10 @@ class Object:
source += "{\n"
if self.features & Object.FEATURE__LIST:
source += " esxVI_%s_Free(&item->_next);\n\n" % self.name
if self.extends is not None:
source += " esxVI_%s_Free((esxVI_%s **)&item->_next);\n\n" % (self.extends, self.extends)
else:
source += " esxVI_%s_Free(&item->_next);\n\n" % self.name
source += self.generate_free_code()
@ -701,7 +704,10 @@ class Object:
source += "{\n"
if self.features & Object.FEATURE__LIST:
source += " esxVI_%s_Free(&item->_next);\n\n" % self.name
if self.extends is not None:
source += " esxVI_%s_Free((esxVI_%s **)&item->_next);\n\n" % (self.extends, self.extends)
else:
source += " esxVI_%s_Free(&item->_next);\n\n" % self.name
source += self.generate_free_code()
@ -1126,11 +1132,11 @@ additional_object_features = { "DatastoreInfo" : Object.FEATURE__AN
"FileInfo" : Object.FEATURE__DYNAMIC_CAST,
"FileQuery" : Object.FEATURE__DYNAMIC_CAST,
"HostCpuIdInfo" : Object.FEATURE__ANY_TYPE | Object.FEATURE__LIST,
"HostDatastoreBrowserSearchResults" : Object.FEATURE__ANY_TYPE,
"HostDatastoreBrowserSearchResults" : Object.FEATURE__LIST | Object.FEATURE__ANY_TYPE,
"ManagedObjectReference" : Object.FEATURE__ANY_TYPE,
"ObjectContent" : Object.FEATURE__DEEP_COPY | Object.FEATURE__LIST,
"PerfCounterInfo" : Object.FEATURE__LIST,
"PerfEntityMetric" : Object.FEATURE__LIST | Object.FEATURE__DYNAMIC_CAST,
"PerfEntityMetric" : Object.FEATURE__LIST | Object.FEATURE__DYNAMIC_CAST,
"PerfQuerySpec" : Object.FEATURE__LIST,
"PerfMetricIntSeries" : Object.FEATURE__DYNAMIC_CAST,
"PropertyFilterSpec" : Object.FEATURE__LIST,