Package: arora
Version: 0.11.0-1
Severity: normal
Tags: patch
This bugs has been present for a long time, and I devoted an evening to its
analysis and - perhaps - solution.
Compiling with symbols included revealed that the problem appeared in the
bookmarks destructor code. I also saw that the bug didn't occur with an empty
bookmark list, and that it occurs when stopping a freshly started browser.
Armed with a pretty good LACK of knowledge of C++ and Qt library, I tweaked the
destructor code to what appeared reasonable in order to avoid a double free
condition.
The changes seem to have cured the problem, and the bookmark management doesn't
seem to have suffered either - deleting a sub-folder works and doesn't crash
the browser.
So, please forward the patch to the maintainer for validation.
-- System Information:
Debian Release: jessie/sid
APT prefers testing
APT policy: (990, 'testing'), (500, 'stable-updates'), (300, 'unstable'),
(200, 'stable'), (1, 'experimental')
Architecture: i386 (x86_64)
Foreign Architectures: amd64
Kernel: Linux 3.11-1-amd64 (SMP w/1 CPU core)
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/bash
Versions of packages arora depends on:
ii libc6 2.17-97
ii libgcc1 1:4.8.2-12
ii libqt4-network 4:4.8.5+git209-g718fae5+dfsg-1
ii libqt4-script 4:4.8.5+git209-g718fae5+dfsg-1
ii libqt4-sql 4:4.8.5+git209-g718fae5+dfsg-1
ii libqtcore4 4:4.8.5+git209-g718fae5+dfsg-1
ii libqtgui4 4:4.8.5+git209-g718fae5+dfsg-1
ii libqtwebkit4 2.2.1-7
ii libstdc++6 4.8.2-12
arora recommends no packages.
arora suggests no packages.
diff -rNu arora-git/src/bookmarks/bookmarknode.cpp arora/src/bookmarks/bookmarknode.cpp
--- arora-git/src/bookmarks/bookmarknode.cpp 2014-01-20 22:14:59.122745830 +0100
+++ arora/src/bookmarks/bookmarknode.cpp 2014-01-20 21:55:43.068049643 +0100
@@ -73,9 +73,10 @@
BookmarkNode::~BookmarkNode()
{
+ if (m_parent == 0) { return; }
+ qDeleteAll(m_children);
if (m_parent)
m_parent->remove(this);
- qDeleteAll(m_children);
m_parent = 0;
m_type = BookmarkNode::Root;
}
diff -rNu arora-git/src/bookmarks/bookmarknode.cpp arora/src/bookmarks/bookmarknode.cpp
--- arora-git/src/bookmarks/bookmarknode.cpp 2014-01-20 22:14:59.122745830 +0100
+++ arora/src/bookmarks/bookmarknode.cpp 2014-01-20 21:55:43.068049643 +0100
@@ -73,9 +73,10 @@
BookmarkNode::~BookmarkNode()
{
+ if (m_parent == 0) { return; }
+ qDeleteAll(m_children);
if (m_parent)
m_parent->remove(this);
- qDeleteAll(m_children);
m_parent = 0;
m_type = BookmarkNode::Root;
}