Wrong usage of QList::ConstIterator & QList::begin() ?
Albert Astals Cid
aacid at kde.org
Sat Oct 18 11:40:34 BST 2008
A Dissabte 18 Octubre 2008, Christian Ehrlicher va escriure:
> While trying to fix some bugs in KFile* on windows I saw some places
> like this:
> for ( QStringList::ConstIterator it = m_dirList.begin();
> it != m_dirList.end() && !terminationRequested();
> ++it )
> Imo the programmer here expects that m_dirList.detach() isn't called but
> this is wrong.
> m_dirList.begin() does a detach, returns a non-const iterator and then
> the iterator is converted to a const iterator (see qlist.h:214 & 238).
> Therefore I suggest to add QT_STRICT_ITERATORS to the kdelibs flags. Or
> does this maybe break BC?
This is not wrong, just not what the developer "really wanted" but it works
just fine, albeit a bit slower.
More information about the kde-core-devel