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.
---
 src/esx/esx_vi_generator.py |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/esx/esx_vi_generator.py b/src/esx/esx_vi_generator.py
index 82bc9b6..44c3493 100755
--- a/src/esx/esx_vi_generator.py
+++ b/src/esx/esx_vi_generator.py
@@ -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,
-- 
1.7.0.4

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to