Control: tags -1 patch

Here's a patch that fixes the errors.  I will create a merge request.

J.
Author: Jeremy Sowden <aza...@debian.org>
Last-Update: 2024-07-26
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1075650
Description: fix gcc-14 FTBFS caused by incompatible pointer types
 `XawListChange` declares the type of its second parameter as `_Xconst
 char **`.  However, xawtv passes `str_list`, which is declared as
 `String *`, or `&empty` which is declared as `char *`.  With gcc 14,
 these result in incompatible-pointer errors:
 .
 x11/propwatch.c: In function 'RebuildList':
 x11/propwatch.c:319:43: error: passing argument 2 of 'XawListChange' from incompatible pointer type [-Wincompatible-pointer-types]
   319 |     XawListChange(bl,str_count ? str_list : &empty,
       |                      ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
       |                                           |
       |                                           char **
 In file included from x11/propwatch.c:28:
 /usr/include/X11/Xaw/List.h:170:27: note: expected 'const char **' but argument is of type 'char **'
   170 |  _Xconst char           **list,
       |                           ^
 x11/propwatch.c: In function 'ProcessPropertyChange':
 x11/propwatch.c:498:34: error: passing argument 2 of 'XawListChange' from incompatible pointer type [-Wincompatible-pointer-types]
   498 |                 XawListChange(bl,str_list,str_count,1000,1);
       |                                  ^~~~~~~~
       |                                  |
       |                                  char **
 /usr/include/X11/Xaw/List.h:170:27: note: expected 'const char **' but argument is of type 'char **'
   170 |  _Xconst char           **list,
       |                           ^
 .
 Both variables are only used as arguments to `XawListChange`, so change
 their types to match its expectations.

--- a/x11/propwatch.c
+++ b/x11/propwatch.c
@@ -58,8 +58,8 @@
     "WM_COMMAND",
 };
 
-static String   *str_list;
-static int      str_count;
+static const char **str_list;
+static int          str_count;
 
 static void AddWatch(Display *dpy, Window win, int i);
 static void DeleteWatch(Window win);
@@ -306,13 +306,13 @@
 static void
 RebuildList(void)
 {
-    static char *empty = "empty";
+    static const char *empty = "empty";
     int i;
     struct WATCHLIST *this;
 
     if (str_list)
 	free(str_list);
-    str_list = malloc(str_count*sizeof(String));
+    str_list = malloc(str_count*sizeof(*str_list));
     for (i=0, this=watchlist; this!=NULL; i++, this=this->next)
 	str_list[i] = this->text;
     qsort(str_list,str_count,sizeof(char*),cmp);

Attachment: signature.asc
Description: PGP signature

Reply via email to