<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'><font size="3" face="Times New Roman">ping ...<br id="FontBreak"></font><br> <BR><div><div id="SkyDrivePlaceholder"></div>> From: ata.husain@hotmail.com<br>> To: libvir-list@redhat.com<br>> CC: ata.husain@hotmail.com<br>> Subject: [PATCH] ESX: Fix DISPATCH_FREE generation code to free all extended objects<br>> Date: Tue, 1 Jan 2013 22:22:28 -0800<br>> <br>> Python code generator "generate_source" section that handles<br>> code generation to "free" inherited objects needs to generate<br>> DISPATCH_FREE calls for all extended_by objects.<br>> ---<br>>  src/esx/esx_vi_generator.py |   21 ++++++++++++++++++---<br>>  1 file changed, 18 insertions(+), 3 deletions(-)<br>> <br>> diff --git a/src/esx/esx_vi_generator.py b/src/esx/esx_vi_generator.py<br>> index af4e7e8..7a7cf76 100755<br>> --- a/src/esx/esx_vi_generator.py<br>> +++ b/src/esx/esx_vi_generator.py<br>> @@ -4,6 +4,7 @@<br>>  # esx_vi_generator.py: generates most of the SOAP type mapping code<br>>  #<br>>  # Copyright (C) 2010-2012 Matthias Bolte <matthias.bolte@googlemail.com><br>> +# Copyright (C) 2013 Ata E Husain Bohra <ata.husain@hotmail.com><br>>  #<br>>  # This library is free software; you can redistribute it and/or<br>>  # modify it under the terms of the GNU Lesser General Public<br>> @@ -785,9 +786,7 @@ class Object(Type):<br>>              source += "ESX_VI__TEMPLATE__DYNAMIC_FREE(%s,\n" % self.name<br>>              source += "{\n"<br>> <br>> -            for extended_by in self.extended_by:<br>> -                source += "    ESX_VI__TEMPLATE__DISPATCH__FREE(%s)\n" \<br>> -                          % extended_by<br>> +            source += recurse_dispatch(self, "ESX_VI__TEMPLATE__DISPATCH__FREE")<br>> <br>>              source += "},\n"<br>>              source += "{\n"<br>> @@ -1285,6 +1284,22 @@ class ManagedObject(Type):<br>> <br>> <br>> <br>> +def recurse_dispatch(object, text):<br>> +<br>> +    source = ""<br>> +<br>> +    if object.extended_by is None:<br>> +        return source<br>> +<br>> +    for extended_by in object.extended_by:<br>> +        source += "    %s(%s)\n" % (text, extended_by)<br>> +        child = objects_by_name[extended_by]<br>> +        source += recurse_dispatch(child, text)<br>> +<br>> +    return source<br>> +<br>> +<br>> +<br>>  class Enum(Type):<br>>      FEATURE__ANY_TYPE = (1 << 1)<br>>      FEATURE__SERIALIZE = (1 << 2)<br>> --<br>> 1.7.9.5<br>> <br></div>                                         </div></body>
</html>