>>>> "Darryl" == Darryl Okahata
<darrylo(a)soco.agilent.com> writes:
Darryl> OK, I just ran XEmacs 21.4.8 under purify, with and
Darryl> without Mule, running gnus, and there's nothing that
Darryl> clearly stands out as a culprit for these crashes. This
Darryl> is under HP-UX 11.11i and with Motif, and so it could be a
Darryl> linux or xaw3d problem.
Could be. Are you a regular Gnus user? For mail? If not, I suspect
that you're probably not exercising the parts of Gnus that cause us
problems.
Darryl> One possible issue is that, with Mule,
Darryl> XRegisterIMInstantiateCallback() doesn't seem to like
Darryl> being passed NULL arguments for res_name/res_class (I'm
Darryl> guessing, here). The NULL pointers get passed to
Darryl> _XimOpenIM(), and they get dereferenced:
I've traced this under Linux (XFree86 4.1.0.1) and they don't get
dereferenced for me ... uh, let me try that with an active IM ...
nope, they still don't get dereferenced. In fact, on Linux
_XimMakeImName doesn't seem to take res_name and res_class as
arguments.
Here's The Obvious Patch[tm], built with my usual options, and
executed with LANG=en_US.utf-8 and XMODIFIERS unset, and executed with
LANG=ja_JP.eucJP XMODIFIERS=@im=kinput2. Seems to work fine on Linux
in "exhaustive testing", about 20 sec worth. :-)
I don't think I'll apply it, I offer it for testing (if you want to
try). My guess is that after applying the patch, you'll get the same
result. It's not the res_* things that are getting dereferenced,
_XimMakeImName doesn't have a handle to them, it's something else.
Index: input-method-xlib.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/input-method-xlib.c,v
retrieving revision 1.12
diff -u -r1.12 input-method-xlib.c
--- input-method-xlib.c 12 Apr 2001 18:23:56 -0000 1.12
+++ input-method-xlib.c 14 May 2002 06:47:59 -0000
@@ -249,9 +249,13 @@
void
XIM_init_device (struct device *d)
{
+ Display *dpy = DEVICE_X_DISPLAY (d);
+ char *name, *class;
+ XtGetApplicationNameAndClass (dpy, &name, &class);
+
#ifdef HAVE_XREGISTERIMINSTANTIATECALLBACK /* X11R6+ */
DEVICE_X_XIM (d) = NULL;
- XRegisterIMInstantiateCallback (DEVICE_X_DISPLAY (d), NULL, NULL, NULL,
+ XRegisterIMInstantiateCallback (dpy, XtDatabase(dpy), name, class,
#ifdef XREGISTERIMINSTANTIATECALLBACK_NONSTANDARD_PROTOTYPE
/* The sixth parameter is of type
XPointer in XFree86 but (XPointer *)
@@ -265,11 +269,8 @@
);
return;
#else /* pre-X11R6 */
- Display *dpy = DEVICE_X_DISPLAY (d);
- char *name, *class;
XIM xim;
- XtGetApplicationNameAndClass (dpy, &name, &class);
DEVICE_X_XIM (d) = xim = XOpenIM (dpy, XtDatabase (dpy), name, class);
if (xim == NULL)
{
--
Institute of Policy and Planning Sciences
http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
My nostalgia for Icon makes me forget about any of the bad things. I don't
have much nostalgia for Perl, so its faults I remember. Scott Gilbert c.l.py