[geany/geany] 9ba7f6: Don't require plugin key group name and label strings to be static
Colomban Wendling
git-noreply at xxxxx
Fri Jul 8 22:23:01 UTC 2016
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Fri, 08 Jul 2016 22:23:01 UTC
Commit: 9ba7f67238dad49e36e5754df9784f47f2c4881e
https://github.com/geany/geany/commit/9ba7f67238dad49e36e5754df9784f47f2c4881e
Log Message:
-----------
Don't require plugin key group name and label strings to be static
Take a copy of the strings not to require them to live live as long as
the plugin does.
This is mostly useful for plugins implemented in dynamic languages
(e.g. through a plugin proxy), as most C plugins will use a static
string here; but it makes the API more straightforward and avoids odd
issues if any plugin doesn't use static strings here, even C ones.
Closes #1125.
Modified Paths:
--------------
src/keybindings.c
Modified: src/keybindings.c
8 lines changed, 6 insertions(+), 2 deletions(-)
===================================================================
@@ -262,8 +262,9 @@ static void add_kb_group(GeanyKeyGroup *group,
{
g_ptr_array_add(keybinding_groups, group);
- group->name = name;
- group->label = label;
+ /* as for items, we only require duplicated name and label for plugins */
+ group->name = plugin ? g_strdup(name) : name;
+ group->label = plugin ? g_strdup(label) : label;
group->callback = callback;
group->cb_func = NULL;
group->cb_data = NULL;
@@ -722,6 +723,9 @@ static void free_key_group(gpointer item)
if (group->cb_data_destroy)
group->cb_data_destroy(group->cb_data);
g_free(group->plugin_keys);
+ /* we allocated those in add_kb_group() as it's a plugin group */
+ g_free((gchar *) group->name);
+ g_free((gchar *) group->label);
g_free(group);
}
}
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list