Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#13621 closed Bug Report - General (fixed)

Convert from Qt foreach() macro to standard C++ range-for.

Reported by: David Hampton Owned by: David Hampton
Priority: major Milestone: 32.0
Component: MythTV - General Version: Master Head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

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 https://doc.qt.io/qt-5/qtglobal.html#qAsConst-1).

Change History (7)

comment:1 by David Hampton <mythtv@…>, 5 years ago

In 5d9b74e7e6/mythtv:

Error: Processor CommitTicketReference failed
GIT backend not available

comment:2 by David Hampton <mythtv@…>, 5 years ago

In f6e3a9598b/mythtv:

Error: Processor CommitTicketReference failed
GIT backend not available

comment:3 by David Hampton <mythtv@…>, 5 years ago

In b357f7d78/mythtv:

Error: Processor CommitTicketReference failed
GIT backend not available

comment:4 by David Hampton <mythtv@…>, 5 years ago

In 174e8f714/mythtv:

Error: Processor CommitTicketReference failed
GIT backend not available

comment:5 by David Hampton <mythtv@…>, 5 years ago

In 11df0636c/mythtv:

Error: Processor CommitTicketReference failed
GIT backend not available

comment:6 by David Hampton <mythtv@…>, 5 years ago

Resolution: fixed
Status: assignedclosed

In c3cc79da1/mythtv:

Error: Processor CommitTicketReference failed
GIT backend not available

comment:7 by David Hampton <mythtv@…>, 5 years ago

In f55f7ebe75/mythtv:

Error: Processor CommitTicketReference failed
GIT backend not available
Note: See TracTickets for help on using tickets.