From 2a12f74c8e8334d7b1f7629b99fd3e23f0f8a3af Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Mon, 9 Aug 2010 21:35:26 -0400 Subject: [PATCH] Clarify memory management of tree models It helps to be explicit about these things. Bug 609264. --- gtk/gtkliststore.c | 4 +++- gtk/gtktreemodel.c | 4 +++- gtk/gtktreestore.c | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gtk/gtkliststore.c b/gtk/gtkliststore.c index a42daaa1da..b8b01f6b7b 100644 --- a/gtk/gtkliststore.c +++ b/gtk/gtkliststore.c @@ -986,7 +986,9 @@ gtk_list_store_set_valist (GtkListStore *list_store, * The list is terminated by a -1. For example, to set column 0 with type * %G_TYPE_STRING to "Foo", you would write gtk_list_store_set (store, iter, * 0, "Foo", -1). - * The value will be copied or referenced by the store if appropriate. + * + * The value will be referenced by the store if it is a %G_TYPE_OBJECT, and it + * will be copied if it is a %G_TYPE_STRING or %G_TYPE_BOXED. **/ void gtk_list_store_set (GtkListStore *list_store, diff --git a/gtk/gtktreemodel.c b/gtk/gtktreemodel.c index 192a06930f..b38d592bb9 100644 --- a/gtk/gtktreemodel.c +++ b/gtk/gtktreemodel.c @@ -1415,8 +1415,10 @@ gtk_tree_model_unref_node (GtkTreeModel *tree_model, * write: gtk_tree_model_get (model, iter, 0, &place_string_here, -1), * where place_string_here is a gchar* to be * filled with the string. - * If appropriate, the returned values have to be freed or unreferenced. * + * Returned values with type %G_TYPE_OBJECT have to be unreferenced, values + * with type %G_TYPE_STRING or %G_TYPE_BOXED have to be freed. Other values are + * passed by value. **/ void gtk_tree_model_get (GtkTreeModel *tree_model, diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c index 4570007018..7047dfb861 100644 --- a/gtk/gtktreestore.c +++ b/gtk/gtktreestore.c @@ -1073,7 +1073,9 @@ gtk_tree_store_set_valist (GtkTreeStore *tree_store, * The list is terminated by a -1. For example, to set column 0 with type * %G_TYPE_STRING to "Foo", you would write * gtk_tree_store_set (store, iter, 0, "Foo", -1). - * The value will be copied or referenced by the store if appropriate. + * + * The value will be referenced by the store if it is a %G_TYPE_OBJECT, and it + * will be copied if it is a %G_TYPE_STRING or %G_TYPE_BOXED. **/ void gtk_tree_store_set (GtkTreeStore *tree_store,