diff --git a/Makefile.in b/Makefile.in index ac8eaed..bef610a 100644 --- a/Makefile.in +++ b/Makefile.in @@ -63,6 +63,7 @@ INSTALL=@INSTALL@ INSTALL_DATA=@INSTALL_DATA@ INSTALL_PROGRAM=@INSTALL_PROGRAM@ HELP2MAN=@HELP2MAN@ +VALGRIND=@VALGRIND@ #---[ Release Targets ]------------------------------------------------------------------ @@ -231,6 +232,22 @@ run: \ @LD_LIBRARY_PATH=$(BINDBG) $(BINDBG)/$(PACKAGE_TARNAME)@EXEEXT@ +mem-check: \ + $(BINDBG)/$(PACKAGE_TARNAME)@EXEEXT@ + +ifeq ($(VALGRIND),no) + + @LD_LIBRARY_PATH=$(BINDBG) \ + $(BINDBG)/$(PACKAGE_TARNAME)@EXEEXT@ + +else + @touch valgrind.suppression + + @LD_LIBRARY_PATH=$(BINDBG) \ + $(VALGRIND) --leak-check=full --track-origins=yes --gen-suppressions=all --suppressions=valgrind.suppression \ + $(BINDBG)/$(PACKAGE_TARNAME)@EXEEXT@ +endif + #---[ Misc Targets ]--------------------------------------------------------------------- locale: \ diff --git a/src/pw3270/common/config.c b/src/pw3270/common/config.c index 3f9e619..d22632c 100644 --- a/src/pw3270/common/config.c +++ b/src/pw3270/common/config.c @@ -551,12 +551,10 @@ void configuration_deinit(void) { #if !defined(ENABLE_WINDOWS_REGISTRY) - gchar *text; - if(!program_config) return; - text = g_key_file_to_data(program_config,NULL,NULL); + g_autofree gchar * text = g_key_file_to_data(program_config,NULL,NULL); if(text) { diff --git a/src/pw3270/main.c b/src/pw3270/main.c index 499dfdd..d055a81 100644 --- a/src/pw3270/main.c +++ b/src/pw3270/main.c @@ -393,7 +393,6 @@ int main(int argc, char *argv[]) GOptionGroup * group = g_option_group_new( PACKAGE_NAME, NULL, NULL, NULL, NULL); g_option_context_set_main_group(context, group); - g_option_context_add_main_entries(context, app_options, NULL); if(!g_option_context_parse( context, &argc, &argv, &error )) @@ -423,6 +422,8 @@ int main(int argc, char *argv[]) return -1; } + + g_option_context_free(context); } if(app_name) diff --git a/valgrind.suppression b/valgrind.suppression new file mode 100644 index 0000000..a1efd7a --- /dev/null +++ b/valgrind.suppression @@ -0,0 +1,162 @@ +{ + libcrypto_BIO_read + Memcheck:Cond + ... + fun:BIO_read +} + +{ + libcrypt_FIPS_selftest + Memcheck:Cond + ... + fun:FIPS_selftest +} + +{ + libcrypt_FIPS_mode_set + Memcheck:Cond + ... + fun:FIPS_mode_set +} + +{ + libcrypt_BIO_new_mem_buf + Memcheck:Cond + ... + fun:BIO_new_mem_buf +} + + +{ + g_type_register_fundamental + Memcheck:Leak + ... + fun:g_type_register_fundamental +} + +{ + glib_dl_init + Memcheck:Leak + ... + fun:_dl_init +} + +{ + pango_itemize_with_base_dir + Memcheck:Leak + ... + fun:pango_itemize_with_base_dir +} + +{ + fontconfig_FcDefaultSubstitute + Memcheck:Leak + ... + fun:FcDefaultSubstitute +} + +{ + fontconfig_FcConfigParseAndLoad + Memcheck:Leak + ... + fun:FcConfigParseAndLoad +} + +{ + fontconfig_FcFontMatch + Memcheck:Leak + ... + fun:FcFontMatch +} + +{ + g_type_register_static + Memcheck:Leak + ... + fun:g_type_register_static +} + +{ + g_thread_pool_push + Memcheck:Leak + ... + fun:g_task_run_in_thread +} + +{ + g_bus_get_sync + Memcheck:Leak + ... + fun:g_bus_get_sync +} + +{ + g_type_add_interface_static + Memcheck:Leak + ... + fun:g_type_add_interface_static +} + +{ + g_type_create_instance + Memcheck:Leak + ... + fun:g_type_create_instance +} + +{ + fontconfig_FcPatternDuplicate + Memcheck:Leak + ... + fun:FcPatternDuplicate +} + +{ + gtk_style_context_set_state + Memcheck:Leak + ... + fun:gtk_style_context_set_state +} + +{ + g_param_spec_flags + Memcheck:Leak + ... + fun:g_param_spec_flags +} + +{ + gtk_style_new + Memcheck:Leak + ... + fun:gtk_style_new +} + +{ + libcrypto_BIO_read + Memcheck:Cond + fun:BIO_read +} + +{ + cairo_mask + Memcheck:Cond + ... + fun:cairo_mask +} + +{ + gtk_css_dimension_value_new + Memcheck:Leak + ... + fun:gtk_css_dimension_value_new +} + +{ + gtk_style_constructed + Memcheck:Leak + ... + fun:gtk_style_constructed +} + + -- libgit2 0.21.2