APPROVE COMMIT 21.5
This patch, whose diagnosis and configure test is entirely due to Ralf
Soergel, fixes the crash for me on both Mac OS X "Yosemite" with Apple
Clang6.0 (LLVM 3.5svn) and Gentoo (about 2 months out of date) with
Clang 3.5.0 as released.
On Gentoo it was tested with and without optimization, and in all
three cases the bogus "gctop" has the save value -- I'm guessing
there's some string or other fixed value in that offset.
@Vin: I think this is probably appropriate for 21.4. I'll try to get
to that tomorrow.
Steve
# HG changeset patch
# Parent 9e5f3a0d4e662ed7fe8e78e87630c5b24bbf4953
Fix progress bar crashes.
Thanks to Ralf Soergel for diagnosis and the configure test.
2015-01-08 Stephen J. Turnbull <stephen(a)xemacs.org>
* config.h.in (HAVE_ATHENA_I18N): New #define.
* lwlib/xt-wrappers.h (HAVE_ATHENA_I18N):
Define XAW_INTERNATIONALIZATION when needed.
* configure.ac (Athena widgets):
Test for international resource in SimpleWidgetClass in libXaw3d.
diff -r 9e5f3a0d4e66 ChangeLog
--- a/ChangeLog Sat Jan 03 16:24:56 2015 +0100
+++ b/ChangeLog Sat Jan 10 17:11:19 2015 +0900
@@ -1,3 +1,12 @@
+2015-01-08 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ Fix progress bar crashes.
+ Thanks to Ralf Soergel for diagnosis and a patch.
+
+ * configure.ac (Athena widgets):
+ Test for "international" resource in SimpleWidgetClass in libXaw3d.
+ * configure: Rebuild.
+
2014-11-09 Jeff Sparkes <jsparkes(a)gmail.com>
* configure.ac (HAVE_GNUTLS): Add SSL/TLS libraries to $LIBS, not
diff -r 9e5f3a0d4e66 configure
--- a/configure Sat Jan 03 16:24:56 2015 +0100
+++ b/configure Sat Jan 10 17:11:19 2015 +0900
@@ -16802,6 +16802,52 @@
if test -n "$athena_lib" -a -n "$athena_h_path"; then
have_xaw=yes
+ have_athena_i18n=unset
+ if test "$athena_variant" = "Xaw3d"; then
+ save_libs_x=$libs_x
+ libs_x="-lXaw3d $libs_x" && if test "$verbose" =
"yes"; then echo " Prepending \"-lXaw3d\" to \$libs_x";
fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for
\"international\" resource in Xaw3d SimpleWidget" >&5
+$as_echo_n "checking for \"international\" resource in Xaw3d
SimpleWidget... " >&6; }
+ if test "$cross_compiling" = yes; then :
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':"
>&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run test program while cross compiling
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+ #include <string.h>
+ #undef XAW_INTERNATIONALIZATION
+ #include <$athena_h_path/Simple.h>
+
+int
+main ()
+{
+int i = simpleWidgetClass->core_class.num_resources;
+ while (i-- > 0)
+ if (!strcmp(simpleWidgetClass->core_class.resources[i].resource_name,
+ "international"))
+ exit(0);
+ exit(253);
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ have_athena_i18n=yes
+else
+ have_athena_i18n=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ libs_x=$save_libs_x
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_athena_i18n"
>&5
+$as_echo "$have_athena_i18n" >&6; }
+ fi
else
have_xaw=no
fi
@@ -17006,10 +17052,13 @@
$as_echo "#define NEED_ATHENA 1" >>confdefs.h
need_athena="yes"
-
if test "$athena_3d" = "yes"; then
$as_echo "#define HAVE_ATHENA_3D 1" >>confdefs.h
+ if test "$have_athena_i18n" = "yes"; then
+ $as_echo "#define HAVE_ATHENA_I18N 1" >>confdefs.h
+
+ fi
fi
;;
esac
diff -r 9e5f3a0d4e66 configure.ac
--- a/configure.ac Sat Jan 03 16:24:56 2015 +0100
+++ b/configure.ac Sat Jan 10 17:11:19 2015 +0900
@@ -4053,6 +4053,35 @@
dnl Do we actually have a usable Athena widget set? Please?
if test -n "$athena_lib" -a -n "$athena_h_path"; then
have_xaw=yes
+ have_athena_i18n=unset
+ dnl X.org at some point added .international to SimplePart, protected
+ dnl by #ifdef XAW_INTERNATIONALIZATION in Xaw3d (only?). Unfortunately,
+ dnl the distributed headers for Xaw3d don't set this to correspond to
+ dnl the distributed library. (pkg-config does, if present.)
+ if test "$athena_variant" = "Xaw3d"; then
+ save_libs_x=$libs_x
+ XE_PREPEND(-lXaw3d, libs_x)
+ dnl The test below was provided by Ralf Soergel.
+ AC_MSG_CHECKING([for "international" resource in Xaw3d SimpleWidget])
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <stdlib.h>
+ #include <string.h>
+ #undef XAW_INTERNATIONALIZATION
+ #include <$athena_h_path/Simple.h>
+ ],
+ [[int i = simpleWidgetClass->core_class.num_resources;
+ while (i-- > 0)
+ if (!strcmp(simpleWidgetClass->core_class.resources[i].resource_name,
+ "international"))
+ exit(0);
+ exit(253);
+ ]])],
+ [have_athena_i18n=yes],
+ [have_athena_i18n=no])
+ libs_x=$save_libs_x
+ AC_MSG_RESULT([$have_athena_i18n])
+ fi
else
have_xaw=no
fi
@@ -4185,9 +4214,11 @@
AC_DEFINE(LWLIB_USES_ATHENA)
AC_DEFINE(NEED_ATHENA)
need_athena="yes"
-
if test "$athena_3d" = "yes"; then
AC_DEFINE(HAVE_ATHENA_3D)
+ if test "$have_athena_i18n" = "yes"; then
+ AC_DEFINE(HAVE_ATHENA_I18N)
+ fi
fi
;;
esac
diff -r 9e5f3a0d4e66 lwlib/ChangeLog
--- a/lwlib/ChangeLog Sat Jan 03 16:24:56 2015 +0100
+++ b/lwlib/ChangeLog Sat Jan 10 17:11:19 2015 +0900
@@ -1,3 +1,11 @@
+2015-01-08 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ Fix progress bar crashes.
+ Thanks to Ralf Soergel for diagnosis and a patch.
+
+ * xt-wrappers.h (HAVE_ATHENA_I18N):
+ Define XAW_INTERNATIONALIZATION when needed.
+
2013-06-23 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.5.34 "kale" is released.
diff -r 9e5f3a0d4e66 lwlib/xt-wrappers.h
--- a/lwlib/xt-wrappers.h Sat Jan 03 16:24:56 2015 +0100
+++ b/lwlib/xt-wrappers.h Sat Jan 10 17:11:19 2015 +0900
@@ -21,6 +21,11 @@
/* Original author: Stephen J. Turnbull for 21.5.29 */
+/* #### Factor out into xaw-wrappers (which would #include this file)? */
+#ifdef HAVE_ATHENA_I18N
+#define XAW_INTERNATIONALIZATION 1
+#endif
+
/* Generic utility macros, including coping with G++ whining.
Used in lwlib via lwlib.h and X consoles via console-x.h.
diff -r 9e5f3a0d4e66 src/ChangeLog
--- a/src/ChangeLog Sat Jan 03 16:24:56 2015 +0100
+++ b/src/ChangeLog Sat Jan 10 17:11:19 2015 +0900
@@ -1,3 +1,10 @@
+2015-01-08 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ Fix progress bar crashes.
+ Thanks to Ralf Soergel for diagnosis and a patch.
+
+ * config.h.in (HAVE_ATHENA_I18N): New #define.
+
2014-12-13 Marcus Crestani <crestani(a)xemacs.org>
* dumper.c (pdump_register_sub): Don't leave fields uninitialized.
diff -r 9e5f3a0d4e66 src/config.h.in
--- a/src/config.h.in Sat Jan 03 16:24:56 2015 +0100
+++ b/src/config.h.in Sat Jan 10 17:11:19 2015 +0900
@@ -868,6 +868,7 @@
#undef LWLIB_WIDGETS_MOTIF
#undef LWLIB_WIDGETS_ATHENA
#undef HAVE_ATHENA_3D
+#undef HAVE_ATHENA_I18N
/* Other things that can be disabled by configure. */
#undef HAVE_MENUBARS
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-patches