dhaumann accepted this revision.
dhaumann added a comment.
This revision is now accepted and ready to land.


  I think this patch looks good (given we sat in front of this issue together, 
I think I also know what's going on). There are still open questions, but 
that's rather unrelated to this patch.
  
  Tested with this patch in Kate, it seems to work. All kxmlgui unit tests 
still pass.
  
  I'm fine with committing. And btw, thanks a lot!

INLINE COMMENTS

> kxmlgui_unittest.cpp:305
>      for (int i = 0; i < expectedActions.count(); ++i) {
> -        QAction *action = actions[i];
> +        if (i >= actions.count())
> +            break;

Interesting, this looks as if there were invalid reads before?

> kxmlgui_unittest.cpp:411
> +    for (int i = 0 ; i < 5 ; ++i) {
> +        qDebug() << "addClient, iteration" << i;
> +        factory.addClient(&partClient);

Is this qDebug() intentional?

> kxmlguifactory_p.cpp:717
> +    // re-calculate the running default and client merging indices
> +    // (especially important in case the QList data got reallocated due to 
> growing!)
>      m_state.currentDefaultMergingIt = 
> parentNode->findIndex(defaultMergingName);

I'm not sure I get this in detail: but as you already mentioned yesterday, it 
seems this saves iterators. It seems to me this code was written at a time (?) 
when QList iterators were stable, but since a QList behaves similar to a 
QVector for ints (iirc), this is rather dangerous, right? I guess that is what 
you imply with your comment here. In that case, it's a wonder all this is still 
working ;)

BRANCH
  master

REVISION DETAIL
  https://phabricator.kde.org/D1924

EMAIL PREFERENCES
  https://phabricator.kde.org/settings/panel/emailpreferences/

To: dfaure, svuorela, dhaumann
Cc: kde-frameworks-devel
_______________________________________________
Kde-frameworks-devel mailing list
Kde-frameworks-devel@kde.org
https://mail.kde.org/mailman/listinfo/kde-frameworks-devel

Reply via email to