[U-Boot] [PATCH 5/7] tools/genboardscfg.py: fix minor problems on termination

Simon Glass sjg at chromium.org
Sat Aug 23 03:53:22 CEST 2014


Hi Masahiro,

On 20 August 2014 22:00, Masahiro Yamada <yamada.m at jp.panasonic.com> wrote:
> Hi Simon,
>
>
>
> On Wed, 20 Aug 2014 13:10:52 -0600
> Simon Glass <sjg at chromium.org> wrote:
>
>> I try to put an _ before private members to indicate that they should
>> not be used outside the class. But It is not particularly important -
>> just thought I'd mention it.
>
>
> I will try my best to keep this in mind
> when I send the next version.
> (and when I write other Python scripts.)
>
> But I do not have an enough motivation to do so for now.
>
>
>
>> > +
>> > +        # Parse all the MAINTAINERS files
>> > +        maintainers_database = MaintainersDatabase()
>> > +        for (dirpath, dirnames, filenames) in os.walk('.'):
>> > +            if 'MAINTAINERS' in filenames:
>> > +                maintainers_database.parse_file(os.path.join(dirpath,
>> > +                                                             'MAINTAINERS'))
>> > +        self.maintainers_database = maintainers_database
>> > +
>> > +    def __del__(self):
>> > +        """Delete the incomplete boards.cfg
>> > +
>> > +        This destructor deletes boards.cfg if the private member 'in_progress'
>> > +        is defined as True.  The 'in_progress' member is set to True at the
>> > +        beginning of the generate() method and set to False at its end.
>> > +        So, in_progress==True means generating boards.cfg was terminated
>> > +        on the way.
>> > +        """
>> > +
>> > +        if hasattr(self, 'in_progress') and self.in_progress:
>>
>> Would it be better to initialise in_progress to None in the constructor?
>>
>
>
> At first I thought of that.
>
>
> If the constructor fails before setting in_progress to None,
> the destructor is invoked with undefined in_progress.
>
> Of course, it rarely (never) happens.
> But I am trying to be as safe as possible.

I think it's good practice to avoid doing any processing in a
constructor that can fail. You can have a separate method for that,
thus guaranteeing that the constructor finishes correctly. Anyway this
is not an important point.

Regards,
Simon


More information about the U-Boot mailing list