Branch: refs/heads/master Author: Dimitar Zhekov dimitar.zhekov@gmail.com Committer: Nick Treleaven nick.treleaven@btinternet.com Date: Fri, 06 Apr 2012 13:04:01 Commit: f2d33bc16ea8c8c6ef5f8f5cd6aee77ec63f2129 https://github.com/geany/geany/commit/f2d33bc16ea8c8c6ef5f8f5cd6aee77ec63f21...
Log Message: ----------- Add stash_group_free_settings() function to API
Frees the memory allocated for setting values in a group.
Modified Paths: -------------- plugins/geanyfunctions.h src/plugindata.h src/plugins.c src/stash.c src/stash.h
Modified: plugins/geanyfunctions.h 2 files changed, 2 insertions(+), 0 deletions(-) =================================================================== @@ -418,6 +418,8 @@ geany_functions->p_stash->stash_group_display #define stash_group_update \ geany_functions->p_stash->stash_group_update +#define stash_group_free_settings \ + geany_functions->p_stash->stash_group_free_settings #define symbols_get_context_separator \ geany_functions->p_symbols->symbols_get_context_separator #define build_activate_menu_item \
Modified: src/plugindata.h 5 files changed, 3 insertions(+), 2 deletions(-) =================================================================== @@ -55,7 +55,7 @@ * @warning You should not test for values below 200 as previously * @c GEANY_API_VERSION was defined as an enum value, not a macro. */ -#define GEANY_API_VERSION 214 +#define GEANY_API_VERSION 215
/** The Application Binary Interface (ABI) version, incremented whenever * existing fields in the plugin data types have to be changed or reordered. @@ -701,6 +701,7 @@ const gchar *property_name, GType type); void (*stash_group_display)(struct StashGroup *group, GtkWidget *owner); void (*stash_group_update)(struct StashGroup *group, GtkWidget *owner); + void (*stash_group_free_settings)(struct StashGroup *group); } StashFuncs;
@@ -716,7 +717,7 @@ typedef struct BuildFuncs { void (*build_activate_menu_item)(const GeanyBuildGroup grp, const guint cmd); - const gchar *(*build_get_current_menu_item)(const GeanyBuildGroup grp, const guint cmd, + const gchar *(*build_get_current_menu_item)(const GeanyBuildGroup grp, const guint cmd, const GeanyBuildCmdEntries field); void (*build_remove_menu_item)(const GeanyBuildSource src, const GeanyBuildGroup grp, const gint cmd);
Modified: src/plugins.c 3 files changed, 2 insertions(+), 1 deletions(-) =================================================================== @@ -346,7 +346,8 @@ &stash_group_add_entry, &stash_group_add_widget_property, &stash_group_display, - &stash_group_update + &stash_group_update, + &stash_group_free_settings };
static SymbolsFuncs symbols_funcs = {
Modified: src/stash.c 23 files changed, 23 insertions(+), 0 deletions(-) =================================================================== @@ -335,6 +335,29 @@ gint stash_group_save_to_file(StashGroup *group, const gchar *filename, }
+/** Frees the memory allocated for setting values in a group. + * Useful e.g. to avoid freeing strings individually. + * @note This is *not* called by stash_group_free(). + * @param group . */ +void stash_group_free_settings(StashGroup *group) +{ + StashPref *entry; + guint i; + + foreach_ptr_array(entry, i, group->entries) + { + if (entry->setting_type == G_TYPE_STRING) + g_free(*(gchararray *) entry->setting); + else if (entry->setting_type == G_TYPE_STRV) + g_strfreev(*(gchararray **) entry->setting); + else + continue; + + *(gpointer**) entry->setting = NULL; + } +} + + /** Frees a group. * @param group . */ void stash_group_free(StashGroup *group)
Modified: src/stash.h 2 files changed, 2 insertions(+), 0 deletions(-) =================================================================== @@ -60,6 +60,8 @@ void stash_group_add_string_vector(StashGroup *group, gchar ***setting, gint stash_group_save_to_file(StashGroup *group, const gchar *filename, GKeyFileFlags flags);
+void stash_group_free_settings(StashGroup *group); + void stash_group_free(StashGroup *group);
@@ Diff output truncated at 100000 characters. @@
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: TBD).