Skip to content

Fix memory leak in KateMessageLayout

Milian Wolff requested to merge work/fix-katemessagelayout-leaks into master

Use a vector-of-values instead of a vector-of-pointers for no good reason. This is faster, uses less memory, and prevents leaks like this one:

=================================================================
==175053==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0x7f9f407caf41 in operator new(unsigned long) /build/gcc/src/gcc/libsanitizer/asan/asan_new_delete.cpp:99
    #1 0x7f9f405d2dc4 in KateMessageLayout::add(QLayoutItem*, KTextEditor::Message::MessagePosition) /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateviewhelpers.cpp:145
    #2 0x7f9f405d2815 in KateMessageLayout::addWidget(QWidget*, KTextEditor::Message::MessagePosition) /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateviewhelpers.cpp:87
    #3 0x7f9f405b3f20 in KTextEditor::ViewPrivate::postMessage(KTextEditor::Message*, QList<QSharedPointer<QAction> >) /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateview.cpp:3673
    #4 0x7f9f404dface in KTextEditor::DocumentPrivate::postMessage(KTextEditor::Message*) /home/milian/projects/kf5/src/frameworks/ktexteditor/src/document/katedocument.cpp:5911
    #5 0x55df19c6d620 in MessageTest::testAutoHide() /home/milian/projects/kf5/src/frameworks/ktexteditor/autotests/src/messagetest.cpp:77
    #6 0x7ffd039e7bbf  ([stack]+0x1fbbf)
    #7 0x55df19c68e82 in MessageTest::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) autotests/messagetest_autogen/UVLADIE3JM/moc_messagetest.cpp:85

Direct leak of 16 byte(s) in 1 object(s) allocated from:
    #0 0x7f9f407caf41 in operator new(unsigned long) /build/gcc/src/gcc/libsanitizer/asan/asan_new_delete.cpp:99
    #1 0x7f9f405d2dc4 in KateMessageLayout::add(QLayoutItem*, KTextEditor::Message::MessagePosition) /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateviewhelpers.cpp:145
    #2 0x7f9f405d2815 in KateMessageLayout::addWidget(QWidget*, KTextEditor::Message::MessagePosition) /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateviewhelpers.cpp:87
    #3 0x7f9f405b3f20 in KTextEditor::ViewPrivate::postMessage(KTextEditor::Message*, QList<QSharedPointer<QAction> >) /home/milian/projects/kf5/src/frameworks/ktexteditor/src/view/kateview.cpp:3673
    #4 0x7f9f404dface in KTextEditor::DocumentPrivate::postMessage(KTextEditor::Message*) /home/milian/projects/kf5/src/frameworks/ktexteditor/src/document/katedocument.cpp:5911
    #5 0x55df19c6a8a2 in MessageTest::testPostMessage() /home/milian/projects/kf5/src/frameworks/ktexteditor/autotests/src/messagetest.cpp:44
    #6 0x7ffd039e7bbf  ([stack]+0x1fbbf)

Merge request reports