[mythtv-commits] Ticket #13621: Convert from Qt foreach() macro to standard C++ range-for.

MythTV noreply at mythtv.org
Mon May 25 18:01:40 UTC 2020

#13621: Convert from Qt foreach() macro to standard C++ range-for.
 Reporter:  David Hampton         |          Owner:  David Hampton
     Type:  Bug Report - General  |         Status:  assigned
 Priority:  major                 |      Milestone:  32.0
Component:  MythTV - General      |        Version:  Master Head
 Severity:  medium                |     Resolution:
 Keywords:                        |  Ticket locked:  0

Comment (by David Hampton <mythtv@…>):

 In [changeset:"5d9b74e7e6e33b07e2525d6f47776b637e9e7303/mythtv"
             #!CommitTicketReference repository="mythtv"
             Convert from Qt foreach() macro to C++ standard range-for.

 The use of foreach has caused some unexpected problems in the
 scheduler, which were chased down to containers detaching in the call
 to get the last item of the range.  This detach guarantees that the
 current iterator is now invalid and the operation will eventually run
 off the end of the range.

 The Qt company is also planning to remove the foreach/Q_FOREACH macro
 in an (as yet unspecified) upcoming release.

 Replace all instances of the foreach macro with a standard C++
 range-for iteration, and (in almost all cases) use the qAsConst macro
 mark to the ranges as constant to prevent detaching of the data.
 There are a couple of places where adding the qAsConst macro throws a
 compiler error, so omit qAsConst in those instances.  These cases all
 appear to occur with temporary lists, and this behavior is intentional
 on Qt's part (see the Qt documentation).

 Refs #13621

Ticket URL: <https://code.mythtv.org/trac/ticket/13621#comment:1>
MythTV <http://www.mythtv.org>
MythTV Media Center

More information about the mythtv-commits mailing list