summaryrefslogtreecommitdiff
path: root/desktop/tree.c
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/tree.c')
-rw-r--r--desktop/tree.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/desktop/tree.c b/desktop/tree.c
index ae4821e3c..5dd0617b7 100644
--- a/desktop/tree.c
+++ b/desktop/tree.c
@@ -894,7 +894,7 @@ void tree_delete_node(struct tree *tree, struct node *node, bool siblings) {
f = e->next;
if (e->text) {
- /* we don't free non-editable titles */
+ /* we don't free non-editable titles or URLs */
if (node->editable)
free(e->text);
else {
@@ -903,7 +903,8 @@ void tree_delete_node(struct tree *tree, struct node *node, bool siblings) {
urldb_reset_url_visit_data(e->text);
}
- if (e->data != TREE_ELEMENT_TITLE)
+ if (e->data != TREE_ELEMENT_TITLE &&
+ e->data != TREE_ELEMENT_URL)
free(e->text);
}
}
@@ -1033,7 +1034,7 @@ struct node *tree_create_URL_node(struct node *parent,
* edited and should never be freed.
*
* \param parent the node to link to
- * \param url the URL (copied)
+ * \param url the URL
* \param data the URL data to use
* \return the node created, or NULL for failure
*/
@@ -1043,16 +1044,12 @@ struct node *tree_create_URL_node_shared(struct node *parent,
struct node_element *element;
char *title;
- assert(data);
-
- /* If title isn't set, set it to the URL */
- if (!data->title)
- urldb_set_url_title(url, url);
+ assert(url && data);
if (data->title)
title = data->title;
else
- return NULL;
+ title = url;
node = tree_create_leaf_node(parent, title);
if (!node)
return NULL;
@@ -1067,7 +1064,7 @@ struct node *tree_create_URL_node_shared(struct node *parent,
tree_create_node_element(node, TREE_ELEMENT_LAST_VISIT);
element = tree_create_node_element(node, TREE_ELEMENT_URL);
if (element)
- element->text = strdup(url);
+ element->text = url;
tree_update_URL_node(node, url, data);
tree_recalculate_node(node, false);