[geany/geany-plugins] daf789: TreeBrowser: Fix various runtime warnings and memory leaks
Colomban Wendling
git-noreply at xxxxx
Mon Mar 4 20:27:54 UTC 2013
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Mon, 04 Mar 2013 20:27:54 UTC
Commit: daf789ae9668f4f6184910c7810079c499515c1a
https://github.com/geany/geany-plugins/commit/daf789ae9668f4f6184910c7810079c499515c1a
Log Message:
-----------
TreeBrowser: Fix various runtime warnings and memory leaks
Modified Paths:
--------------
treebrowser/src/treebrowser.c
Modified: treebrowser/src/treebrowser.c
56 files changed, 24 insertions(+), 32 deletions(-)
===================================================================
@@ -1014,10 +1014,9 @@ enum
on_menu_create_new_object(GtkMenuItem *menuitem, const gchar *type)
{
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
- GtkTreeIter iter;
+ GtkTreeIter iter, iter_parent;
GtkTreeModel *model;
gchar *uri, *uri_new = NULL;
- GtkTreePath *path_parent;
gboolean refresh_root = FALSE;
if (gtk_tree_selection_get_selected(selection, &model, &iter))
@@ -1026,12 +1025,13 @@ enum
/* If not a directory, find parent directory */
if (! g_file_test(uri, G_FILE_TEST_IS_DIR))
{
- path_parent = gtk_tree_model_get_path(GTK_TREE_MODEL(treestore), &iter);
- /* Set iter from parent_path */
- if (gtk_tree_path_up(path_parent) &&
- gtk_tree_model_get_iter(GTK_TREE_MODEL(treestore), &iter, path_parent))
- /* Set URI from new iter */
- gtk_tree_model_get(model, &iter, TREEBROWSER_COLUMN_URI, &uri, -1);
+ if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(treestore), &iter_parent, &iter))
+ {
+ iter = iter_parent;
+ /* Set URI from parent iter */
+ g_free(uri);
+ gtk_tree_model_get(model, &iter_parent, TREEBROWSER_COLUMN_URI, &uri, -1);
+ }
else
refresh_root = TRUE;
}
@@ -1085,9 +1085,8 @@ enum
{
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
- GtkTreeIter iter;
+ GtkTreeIter iter, iter_parent;
GtkTreeModel *model;
- GtkTreePath *path_parent;
gchar *uri, *uri_parent;
if (! gtk_tree_selection_get_selected(selection, &model, &iter))
@@ -1102,17 +1101,10 @@ enum
uri_parent = g_path_get_dirname(uri);
fs_remove(uri, TRUE);
- path_parent = gtk_tree_model_get_path(GTK_TREE_MODEL(treestore), &iter);
- if (gtk_tree_path_up(path_parent))
- {
- if (gtk_tree_model_get_iter(GTK_TREE_MODEL(treestore), &iter, path_parent))
- treebrowser_browse(uri_parent, &iter);
- else
- treebrowser_browse(uri_parent, NULL);
- }
+ if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(treestore), &iter_parent, &iter))
+ treebrowser_browse(uri_parent, &iter_parent);
else
treebrowser_browse(uri_parent, NULL);
- gtk_tree_path_free(path_parent);
g_free(uri_parent);
}
g_free(uri);
@@ -1566,8 +1558,7 @@ enum
GtkTreeViewColumn *column;
GList *renderers;
GtkTreeIter iter, iter_parent;
- gchar *uri, *uri_new;
- GtkTreePath *path_parent;
+ gchar *uri, *uri_new, *dirname;
column = gtk_tree_view_get_column(GTK_TREE_VIEW(treeview), 0);
renderers = _gtk_cell_layout_get_cells(column);
@@ -1580,31 +1571,32 @@ enum
gtk_tree_model_get(GTK_TREE_MODEL(treestore), &iter, TREEBROWSER_COLUMN_URI, &uri, -1);
if (uri)
{
- uri_new = g_strconcat(g_path_get_dirname(uri), G_DIR_SEPARATOR_S, name_new, NULL);
+ dirname = g_path_get_dirname(uri);
+ uri_new = g_strconcat(dirname, G_DIR_SEPARATOR_S, name_new, NULL);
+ g_free(dirname);
if (!(g_file_test(uri_new, G_FILE_TEST_EXISTS) &&
strcmp(uri, uri_new) != 0 &&
!dialogs_show_question(_("Target file '%s' exists, do you really want to replace it?"), uri_new)))
{
if (g_rename(uri, uri_new) == 0)
{
+ dirname = g_path_get_dirname(uri_new);
gtk_tree_store_set(treestore, &iter,
TREEBROWSER_COLUMN_NAME, name_new,
TREEBROWSER_COLUMN_URI, uri_new,
-1);
- path_parent = gtk_tree_model_get_path(GTK_TREE_MODEL(treestore), &iter);
- if (gtk_tree_path_up(path_parent))
- {
- if (gtk_tree_model_get_iter(GTK_TREE_MODEL(treestore), &iter_parent, path_parent))
- treebrowser_browse(g_path_get_dirname(uri_new), &iter_parent);
- else
- treebrowser_browse(g_path_get_dirname(uri_new), NULL);
- }
+ if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(treestore), &iter_parent, &iter))
+ treebrowser_browse(dirname, &iter_parent);
else
- treebrowser_browse(g_path_get_dirname(uri_new), NULL);
+ treebrowser_browse(dirname, NULL);
+ g_free(dirname);
if (!g_file_test(uri, G_FILE_TEST_IS_DIR))
- if (document_close(document_find_by_filename(uri)))
+ {
+ GeanyDocument *doc = document_find_by_filename(uri);
+ if (doc && document_close(doc))
document_open_file(uri_new, FALSE, NULL, NULL);
+ }
}
}
g_free(uri_new);
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Plugins-Commits
mailing list