summaryrefslogtreecommitdiffstats
path: root/collectors/plugins.d
diff options
context:
space:
mode:
authorVladimir Kobal <vlad@prokk.net>2019-03-13 18:18:55 +0200
committerGitHub <noreply@github.com>2019-03-13 18:18:55 +0200
commitfb6def2fff1e1d333b94ee7ada25d610aee1708b (patch)
treee06f2f3906c7f76d1c5aeaa0df5fa7b12163ee56 /collectors/plugins.d
parentb7998ec82d579bd0550e23f880decdcee61264f5 (diff)
Fix memory leaks (#5604)
Diffstat (limited to 'collectors/plugins.d')
-rw-r--r--collectors/plugins.d/plugins_d.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/collectors/plugins.d/plugins_d.c b/collectors/plugins.d/plugins_d.c
index 38f3240788..024dd292ae 100644
--- a/collectors/plugins.d/plugins_d.c
+++ b/collectors/plugins.d/plugins_d.c
@@ -101,11 +101,13 @@ static inline int quoted_strings_splitter(char *str, char **words, int max_words
inline int pluginsd_initialize_plugin_directories() {
char plugins_dirs[(FILENAME_MAX * 2) + 1];
- char *plugins_dir_list = NULL;
+ static char *plugins_dir_list = NULL;
// Get the configuration entry
- snprintfz(plugins_dirs, FILENAME_MAX * 2, "\"%s\" \"%s/custom-plugins.d\"", PLUGINS_DIR, CONFIG_DIR);
- plugins_dir_list = strdupz(config_get(CONFIG_SECTION_GLOBAL, "plugins directory", plugins_dirs));
+ if(likely(!plugins_dir_list)) {
+ snprintfz(plugins_dirs, FILENAME_MAX * 2, "\"%s\" \"%s/custom-plugins.d\"", PLUGINS_DIR, CONFIG_DIR);
+ plugins_dir_list = strdupz(config_get(CONFIG_SECTION_GLOBAL, "plugins directory", plugins_dirs));
+ }
// Parse it and store it to plugin directories
return quoted_strings_splitter(plugins_dir_list, plugin_directories, PLUGINSD_MAX_DIRECTORIES, config_isspace);