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)
+ {