Index: bom2.c =================================================================== --- bom2.c (revision 38014) +++ bom2.c (revision 38015) @@ -59,9 +59,6 @@ const char *val = bom2_values[HA_bom2file].str; /* load all formats from the config */ - bom_fmt_names.used = 0; - bom_fmt_ids.used = 0; - bom_build_fmts(&conf_bom2.plugins.export_bom2.templates); if (bom_fmt_names.used == 0) { @@ -195,9 +192,7 @@ rnd_export_remove_opts_by_cookie(bom2_cookie); rnd_conf_unreg_file(CONF_FN, export_bom2_conf_internal); rnd_conf_unreg_fields("plugins/export_bom2/"); - bom_free_fmts(); - vts0_uninit(&bom_fmt_names); - vts0_uninit(&bom_fmt_ids); + bom_fmt_uninit(); rnd_hid_remove_hid(&bom2_hid); } @@ -230,7 +225,6 @@ rnd_hid_register_hid(&bom2_hid); rnd_hid_load_defaults(&bom2_hid, bom2_options, NUM_OPTIONS); - vts0_init(&bom_fmt_names); - vts0_init(&bom_fmt_ids); + bom_fmt_init(); return 0; } Index: lib_bom.c =================================================================== --- lib_bom.c (revision 38014) +++ lib_bom.c (revision 38015) @@ -8,8 +8,22 @@ free(bom_fmt_ids.array[n]); bom_fmt_ids.array[n] = NULL; } + bom_fmt_names.used = 0; + bom_fmt_ids.used = 0; } +static void bom_fmt_init(void) +{ + vts0_init(&bom_fmt_names); + vts0_init(&bom_fmt_ids); +} + +static void bom_fmt_uninit(void) +{ + vts0_uninit(&bom_fmt_names); + vts0_uninit(&bom_fmt_ids); +} + static void bom_build_fmts(const rnd_conflist_t *templates) { rnd_conf_listitem_t *li; Index: lib_bom.h =================================================================== --- lib_bom.h (revision 38014) +++ lib_bom.h (revision 38015) @@ -19,9 +19,12 @@ static vts0_t bom_fmt_names; /* array of const char * long name of each format, pointing into the conf database */ static vts0_t bom_fmt_ids; /* array of strdup'd short name (ID) of each format */ +/* Call these once on plugin init/uninit */ +static void bom_fmt_init(void); +static void bom_fmt_uninit(void); + static void bom_build_fmts(const rnd_conflist_t *templates); -static void bom_free_fmts(void); static void bom_gather_templates(void); static void bom_init_template(bom_template_t *templ, const char *tid);