summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-10-03 00:13:18 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-10-03 00:13:18 +0100
commit69e3963dae8dae6ec9c7e3300083d97b2c7b8b2a (patch)
tree496a16dcbcb1cbba5184965057d48e8f35f4f775
parent2a4fb9ecd1b80cefab5999e5401c339c0973d574 (diff)
downloadnetsurf-69e3963dae8dae6ec9c7e3300083d97b2c7b8b2a.tar.gz
netsurf-69e3963dae8dae6ec9c7e3300083d97b2c7b8b2a.tar.bz2
Avoid NULL deref when deleting a node, causing empty ancestor nodes to be deleted.
-rw-r--r--desktop/treeview.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/desktop/treeview.c b/desktop/treeview.c
index 3bd0f6a35..02b31a670 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -1185,13 +1185,14 @@ nserror treeview_delete_node(treeview *tree, treeview_node *n,
{
nserror err;
struct rect r;
- treeview_node *p;
+ bool visible;
assert(tree != NULL);
assert(n != NULL);
assert(n->parent != NULL);
- p = n->parent;
+ visible = n->parent->flags & TREE_NODE_EXPANDED;
+
r.y0 = treeview_node_y(tree, n);
r.y1 = tree->root->height;
@@ -1217,8 +1218,7 @@ nserror treeview_delete_node(treeview *tree, treeview_node *n,
}
/* Redraw */
- if (p->flags & TREE_NODE_EXPANDED &&
- !(flags & TREE_OPTION_SUPPRESS_REDRAW)) {
+ if (visible && !(flags & TREE_OPTION_SUPPRESS_REDRAW)) {
r.x0 = 0;
r.x1 = REDRAW_MAX;
tree->cw_t->redraw_request(tree->cw_h, &r);