Hi,

When compiling Texinfo I see the following warning from GCC:

    main/get_perl_info.c: In function 'html_get_button_specification_list':
    main/get_perl_info.c:792:28: warning: 'text_type_p' may be used 
uninitialized [-Wmaybe-uninitialized]
      792 |                       if (!strcmp (html_command_text_type_name[j],
          |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      793 |                                    text_type_p))
          |                                    ~~~~~~~~~~~~
    main/get_perl_info.c:780:25: note: 'text_type_p' was declared here
      780 |                   char *text_type_p;
          |                         ^~~~~~~~~~~

Here is the corresponding section of code:

                  int j;
                  char *text_type_string
                     = SvPVutf8_nolen (*button_spec_info_type);
                  char *text_type_p;
                  if (strlen (text_type_string) > 2
                      && !(memcmp (text_type_string, "->", 2)))
                    {
                      button_spec->type
                        = BIT_selected_direction_information_type;
                      text_type_p = text_type_string +2;
                      text_type_p += strspn (text_type_p, whitespace_chars);
                    }
                  button_spec->bi.direction_information_type = -1;
                  for (j = 0; j < HTT_section +1; j++)
                    {
                      if (!strcmp (html_command_text_type_name[j],
                                   text_type_p))
                        {
                          button_spec->bi.direction_information_type = j;
                          break;
                        }
                    }

This warning seems accurate to me, since if the first condition is not
satisfied the uninitialized pointer is passed to strcmp.

I have attached a proposed patch.

Collin

>From a757289836db44501eb667ee222fa48fd5da31a9 Mon Sep 17 00:00:00 2001
Message-ID: <a757289836db44501eb667ee222fa48fd5da31a9.1747705234.git.collin.fu...@gmail.com>
From: Collin Funk <[email protected]>
Date: Mon, 19 May 2025 18:32:19 -0700
Subject: [PATCH] Fix an uninitialized variable.

* tta/C/main/get_perl_info.c (html_get_button_specification_list):
Initialize to text_type_p and then check it before accessing.
---
 tta/C/main/get_perl_info.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/tta/C/main/get_perl_info.c b/tta/C/main/get_perl_info.c
index bf1035dea3..dae1b8600b 100644
--- a/tta/C/main/get_perl_info.c
+++ b/tta/C/main/get_perl_info.c
@@ -777,7 +777,7 @@ html_get_button_specification_list (const CONVERTER *converter,
                   int j;
                   char *text_type_string
                      = SvPVutf8_nolen (*button_spec_info_type);
-                  char *text_type_p;
+                  char *text_type_p = NULL;
                   if (strlen (text_type_string) > 2
                       && !(memcmp (text_type_string, "->", 2)))
                     {
@@ -787,15 +787,16 @@ html_get_button_specification_list (const CONVERTER *converter,
                       text_type_p += strspn (text_type_p, whitespace_chars);
                     }
                   button_spec->bi.direction_information_type = -1;
-                  for (j = 0; j < HTT_section +1; j++)
-                    {
-                      if (!strcmp (html_command_text_type_name[j],
+                  if (text_type_p)
+                    for (j = 0; j < HTT_section +1; j++)
+                      {
+                        if (!strcmp (html_command_text_type_name[j],
                                    text_type_p))
-                        {
-                          button_spec->bi.direction_information_type = j;
-                          break;
-                        }
-                    }
+                          {
+                            button_spec->bi.direction_information_type = j;
+                            break;
+                          }
+                      }
                 }
             }
         }
-- 
2.49.0

Reply via email to