https://gcc.gnu.org/g:ed712cfe2e826cd846705defb1f6ae391baecb3d

commit r15-5808-ged712cfe2e826cd846705defb1f6ae391baecb3d
Author: Ian Lance Taylor <i...@golang.org>
Date:   Thu Nov 28 13:14:34 2024 -0800

    compiler: increase buffer size to avoid warning
    
    GCC has a new -Wformat-truncation warning that triggers on this code:
    
    ../../gcc/go/gofrontend/go-encode-id.cc: In function 'std::string 
go_encode_id(const std::string&)':
    ../../gcc/go/gofrontend/go-encode-id.cc:176:48: error: '%02x' directive 
output may be truncated writing between 2 and 8 bytes into a region of size 6 
[-Werror=format-truncation=]
      176 |                   snprintf(buf, sizeof buf, "_x%02x", c);
          |                                                ^~~~
    ../../gcc/go/gofrontend/go-encode-id.cc:176:45: note: directive argument in 
the range [128, 4294967295]
      176 |                   snprintf(buf, sizeof buf, "_x%02x", c);
          |                                             ^~~~~~~~
    ../../gcc/go/gofrontend/go-encode-id.cc:176:27: note: 'snprintf' output 
between 5 and 11 bytes into a destination of size 8
      176 |                   snprintf(buf, sizeof buf, "_x%02x", c);
          |                   ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    The code is safe, because the value of c is known to be >= 0 && <= 0xff.
    But it's difficult for the compiler to know that.
    Bump the buffer size to avoid the warning.
    
    Fixes PR go/117833
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/632455

Diff:
---
 gcc/go/gofrontend/MERGE           | 2 +-
 gcc/go/gofrontend/go-encode-id.cc | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE
index 59badf80f40b..3bd755ce515e 100644
--- a/gcc/go/gofrontend/MERGE
+++ b/gcc/go/gofrontend/MERGE
@@ -1,4 +1,4 @@
-f9ea9801058aa98a421784da12b76cda0b4c6cf2
+dfe585bf82380630697e96c249de825c5f655afe
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
diff --git a/gcc/go/gofrontend/go-encode-id.cc 
b/gcc/go/gofrontend/go-encode-id.cc
index 7ab65f513b39..5c82aa74533d 100644
--- a/gcc/go/gofrontend/go-encode-id.cc
+++ b/gcc/go/gofrontend/go-encode-id.cc
@@ -172,7 +172,7 @@ go_encode_id(const std::string &id)
                }
              else
                {
-                 char buf[8];
+                 char buf[16];
                  snprintf(buf, sizeof buf, "_x%02x", c);
                  ret.append(buf);
                }

Reply via email to