Hi ports@,

this is an update to the latest fvwm3 release [1].

Unfortunately there was a bug [2] that caused consistent crashes on 
OpenBSD. Reverting the commit in question seems to resolve that issue, 
which is also what others [3] seem to be doing for now. Patch for this 
is included as 'patch-fvwm_ewmh_names_c'.

Tested on amd64.


[1] https://github.com/fvwmorg/fvwm3/releases/tag/1.0.7
[2] https://github.com/fvwmorg/fvwm3/issues/873
[3] 
https://github.com/freebsd/freebsd-ports/commit/3e35051e913e46e0132df070d5a718d443bfd0b8
Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/fvwm3/Makefile,v
retrieving revision 1.8
diff -u -p -r1.8 Makefile
--- Makefile    24 Jan 2023 18:05:35 -0000      1.8
+++ Makefile    25 Aug 2023 12:22:31 -0000
@@ -1,6 +1,6 @@
 COMMENT=       multiple virtual desktop window manager
 
-VERSION=       1.0.6a
+VERSION=       1.0.7
 DISTNAME=      fvwm3-${VERSION}
 
 CATEGORIES=     x11
Index: distinfo
===================================================================
RCS file: /cvs/ports/x11/fvwm3/distinfo,v
retrieving revision 1.3
diff -u -p -r1.3 distinfo
--- distinfo    22 Jan 2023 12:11:26 -0000      1.3
+++ distinfo    25 Aug 2023 12:22:31 -0000
@@ -1,2 +1,2 @@
-SHA256 (fvwm3-1.0.6a.tar.gz) = RmWmYTPgcLeRkXsHlMxt9rdUZ56+kTBxhCfbZHm7W2g=
-SIZE (fvwm3-1.0.6a.tar.gz) = 4538100
+SHA256 (fvwm3-1.0.7.tar.gz) = OqzXz+/2DbG82cdzMtxXX+dxHS0wbwR5UlN43G2z0x4=
+SIZE (fvwm3-1.0.7.tar.gz) = 4512128
Index: patches/patch-configure
===================================================================
RCS file: /cvs/ports/x11/fvwm3/patches/patch-configure,v
retrieving revision 1.3
diff -u -p -r1.3 patch-configure
--- patches/patch-configure     13 Oct 2022 16:00:45 -0000      1.3
+++ patches/patch-configure     25 Aug 2023 12:22:31 -0000
@@ -1,7 +1,7 @@
 Index: configure
 --- configure.orig
 +++ configure
-@@ -11779,7 +11779,7 @@ then :
+@@ -11726,7 +11726,7 @@ then :
  else $as_nop
  
      with_intl=maybe
Index: patches/patch-default-config_Makefile_in
===================================================================
RCS file: /cvs/ports/x11/fvwm3/patches/patch-default-config_Makefile_in,v
retrieving revision 1.3
diff -u -p -r1.3 patch-default-config_Makefile_in
--- patches/patch-default-config_Makefile_in    13 Oct 2022 16:00:45 -0000      
1.3
+++ patches/patch-default-config_Makefile_in    25 Aug 2023 12:22:31 -0000
@@ -1,7 +1,7 @@
 Index: default-config/Makefile.in
 --- default-config/Makefile.in.orig
 +++ default-config/Makefile.in
-@@ -593,9 +593,10 @@ uninstall-am: uninstall-configDATA
+@@ -574,9 +574,10 @@ uninstall-am: uninstall-configDATA
  
  install-data-hook:
        cp -r $(srcdir)/images $(inst_location)/default-config
Index: patches/patch-fvwm_ewmh_names_c
===================================================================
RCS file: patches/patch-fvwm_ewmh_names_c
diff -N patches/patch-fvwm_ewmh_names_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-fvwm_ewmh_names_c     25 Aug 2023 12:22:31 -0000
@@ -0,0 +1,133 @@
+Revert b7ae07c34bb9172b8aba964023c2febc178f7f97 to work around
+https://github.com/fvwmorg/fvwm3/issues/873
+
+Index: fvwm/ewmh_names.c
+--- fvwm/ewmh_names.c.orig
++++ fvwm/ewmh_names.c
+@@ -125,14 +125,15 @@ int EWMH_WMIconName(
+ {
+       int size = 0;
+       char *val;
+-      char *text;
++      char *tmp_str;
++      FlocaleCharset *fc = NULL;
+ 
+       if (!FiconvSupport)
+       {
+               return 0;
+       }
+ 
+-      text = val = ewmh_AtomGetByName(
++      val = ewmh_AtomGetByName(
+               FW_W(fw), "_NET_WM_ICON_NAME",
+               EWMH_ATOM_LIST_PROPERTY_NOTIFY, &size);
+ 
+@@ -141,25 +142,28 @@ int EWMH_WMIconName(
+               SET_HAS_EWMH_WM_ICON_NAME(fw,0);
+               return 0;
+       }
+-      if (IS_ICON_FONT_LOADED(fw) && fw->icon_font != NULL && 
fw->icon_font->fftf.fftfont[0] == NULL)
++      if (IS_ICON_FONT_LOADED(fw) && fw->icon_font != NULL)
+       {
+-              text = FiconvUtf8ToCharset(dpy, fw->icon_font->str_fc, val, 
size);
+-              free(val);
++              fc = fw->icon_font->str_fc;
+       }
+-      if (text == NULL)
++
++      tmp_str = (char *)FiconvUtf8ToCharset(
++              dpy, fc, (const char *) val, size);
++      free(val);
++      if (tmp_str == NULL)
+       {
+               SET_HAS_EWMH_WM_ICON_NAME(fw, 0);
+               return 0;
+       }
+-      if (strlen(text) > MAX_ICON_NAME_LEN)
++      if (strlen(tmp_str) > MAX_ICON_NAME_LEN)
+       {
+-              text[MAX_ICON_NAME_LEN] = 0;
++              tmp_str[MAX_ICON_NAME_LEN] = 0;
+       }
+       SET_HAS_EWMH_WM_ICON_NAME(fw, 1);
+-      if (fw->icon_name.name && strcmp(text, fw->icon_name.name) == 0)
++      if (fw->icon_name.name && strcmp(tmp_str, fw->icon_name.name) == 0)
+       {
+               /* migo: some apps update their names every second */
+-              free(text);
++              free(tmp_str);
+               return 0;
+       }
+ 
+@@ -169,7 +173,7 @@ int EWMH_WMIconName(
+               free_window_names(fw, False, True);
+       }
+ 
+-      fw->icon_name.name = text;
++      fw->icon_name.name = tmp_str;
+ 
+       SET_WAS_ICON_NAME_PROVIDED(fw, 1);
+ 
+@@ -189,13 +193,14 @@ int EWMH_WMName(
+ {
+       int size = 0;
+       char *val;
+-      char *text;
++      char *tmp_str;
++      FlocaleCharset *fc = NULL;
+       int what_changed;
+ 
+       if (!FiconvSupport)
+               return 0;
+ 
+-      text = val = ewmh_AtomGetByName(
++      val = ewmh_AtomGetByName(
+               FW_W(fw), "_NET_WM_NAME",
+               EWMH_ATOM_LIST_PROPERTY_NOTIFY, &size);
+ 
+@@ -204,25 +209,28 @@ int EWMH_WMName(
+               SET_HAS_EWMH_WM_NAME(fw,0);
+               return 0;
+       }
+-      if (IS_WINDOW_FONT_LOADED(fw) && fw->title_font != NULL && 
fw->title_font->fftf.fftfont[0] == NULL)
++      if (IS_WINDOW_FONT_LOADED(fw) && fw->title_font != NULL)
+       {
+-              text = FiconvUtf8ToCharset(dpy, fw->title_font->str_fc, val, 
size);
+-              free(val);
++              fc = fw->title_font->str_fc;
+       }
+-      if (text == NULL)
++
++      tmp_str = (char *)FiconvUtf8ToCharset(
++              dpy, fc, (const char *) val, size);
++      free(val);
++      if (tmp_str == NULL)
+       {
+               SET_HAS_EWMH_WM_NAME(fw,0);
+               return 0;
+       }
+-      if (strlen(text) > MAX_WINDOW_NAME_LEN)
++      if (strlen(tmp_str) > MAX_WINDOW_NAME_LEN)
+       {
+-              text[MAX_WINDOW_NAME_LEN] = 0;
++              tmp_str[MAX_WINDOW_NAME_LEN] = 0;
+       }
+       SET_HAS_EWMH_WM_NAME(fw, 1);
+-      if (fw->name.name && strcmp(text, fw->name.name) == 0)
++      if (fw->name.name && strcmp(tmp_str, fw->name.name) == 0)
+       {
+               /* migo: some apps update their names every second */
+-              free(text);
++              free(tmp_str);
+               return 0;
+       }
+ 
+@@ -232,7 +240,7 @@ int EWMH_WMName(
+               free_window_names(fw, True, False);
+       }
+ 
+-      fw->name.name = text;
++      fw->name.name = tmp_str;
+ 
+       if (ev == NULL)
+       {

Reply via email to