commit d88aa9a8dba9228e6780d6bb5a5720a36f854918
parent 9bfc13d64b5acb92c6648c696a9d9260fcbecc65
Author: Mykola Orliuk <virkony@gmail.com>
Date:   Sun,  5 May 2019 23:29:10 +0200
Avoid extra char copy in strncpy
Also reserve unused extra char in get_atom_name to avoid gcc 8.3.0 error like:
'strncpy' specified bound 4098 equals destination size [-Werror=stringop-truncation]
Diffstat:
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/xsel.c b/xsel.c
@@ -233,7 +233,8 @@ static char *
 get_atom_name (Atom atom)
 {
   char * ret;
-  static char atom_name[MAXLINE+1];
+  static char atom_name[MAXLINE+2];  /* unused extra char to avoid
+                                        string-op-truncation warning */
 
   if (atom == None) return "None";
   if (atom == XA_STRING) return "STRING";
@@ -249,7 +250,7 @@ get_atom_name (Atom atom)
   if (atom == utf8_atom) return "UTF8_STRING";
 
   ret = XGetAtomName (display, atom);
-  strncpy (atom_name, ret, sizeof (atom_name));
+  strncpy (atom_name, ret, MAXLINE+1);
   if (atom_name[MAXLINE] != '\0')
     {
       atom_name[MAXLINE-3] = '.';
@@ -328,7 +329,7 @@ static char *
 _xs_strncpy (char * dest, const char * src, size_t n)
 {
   if (n > 0) {
-    strncpy (dest, src, n);
+    strncpy (dest, src, n-1);
     dest[n-1] = '\0';
   }
   return dest;