diagnostics: don't generate URLs that won't be used
authorDavid Malcolm <dmalcolm@redhat.com>
Tue, 4 Feb 2020 00:58:54 +0000 (19:58 -0500)
committerDavid Malcolm <dmalcolm@redhat.com>
Tue, 18 Feb 2020 01:40:00 +0000 (20:40 -0500)
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
gcc/diagnostic.c

index a07e536..9f8ad15 100644 (file)
@@ -1,3 +1,10 @@
+2020-02-17  David Malcolm  <dmalcolm@redhat.com>
+
+       * 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 <oliva@adacore.com>
 
        * tree-emutls.c (new_emutls_decl, emutls_common_1): Complete
index e4a08f7..ed52bc0 100644 (file)
@@ -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;