From abb4852434b3dee26301cc406472ac9450c621aa Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Mon, 3 Feb 2020 19:58:54 -0500 Subject: [PATCH] diagnostics: don't generate URLs that won't be used The two places in diagnostics.c where URLs are printed both do non-trivial work to generate the URL strings (including malloc/free), so don't do this work if URL-printing is disabled. gcc/ChangeLog: * diagnostic.c (print_any_cwe): Don't call get_cwe_url if URLs won't be printed. (print_option_information): Don't call get_option_url if URLs won't be printed. --- gcc/ChangeLog | 7 +++++++ gcc/diagnostic.c | 15 ++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a07e536789f..9f8ad15a29c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2020-02-17 David Malcolm + + * diagnostic.c (print_any_cwe): Don't call get_cwe_url if URLs + won't be printed. + (print_option_information): Don't call get_option_url if URLs + won't be printed. + 2020-02-17 Alexandre Oliva * tree-emutls.c (new_emutls_decl, emutls_common_1): Complete diff --git a/gcc/diagnostic.c b/gcc/diagnostic.c index e4a08f76def..ed52bc03d17 100644 --- a/gcc/diagnostic.c +++ b/gcc/diagnostic.c @@ -983,12 +983,16 @@ print_any_cwe (diagnostic_context *context, pp_string (pp, " ["); pp_string (pp, colorize_start (pp_show_color (pp), diagnostic_kind_color[diagnostic->kind])); - char *cwe_url = get_cwe_url (cwe); - pp_begin_url (pp, cwe_url); - free (cwe_url); + if (pp->url_format != URL_FORMAT_NONE) + { + char *cwe_url = get_cwe_url (cwe); + pp_begin_url (pp, cwe_url); + free (cwe_url); + } pp_printf (pp, "CWE-%i", cwe); pp_set_prefix (context->printer, saved_prefix); - pp_end_url (pp); + if (pp->url_format != URL_FORMAT_NONE) + pp_end_url (pp); pp_string (pp, colorize_stop (pp_show_color (pp))); pp_character (pp, ']'); } @@ -1011,7 +1015,8 @@ print_option_information (diagnostic_context *context, if (option_text) { char *option_url = NULL; - if (context->get_option_url) + if (context->get_option_url + && context->printer->url_format != URL_FORMAT_NONE) option_url = context->get_option_url (context, diagnostic->option_index); pretty_printer *pp = context->printer; -- 2.30.2