APPROVE COMMIT 21.5
Not relevant to 21.4.
This was either introduced or unmasked by Aidan's 2007-02-06 patch to
specifier.c. The crash is reproducible and occurs as soon as VM tries
to create a new frame after M-x vm.
I don't know if these are exactly the desired semantics, but it's
pretty close. Since the function is only called by VM, it's hard to
test in context, but it works for me in VM and when called in an X11
frame or a TTY frame.
Index: src/ChangeLog
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v
retrieving revision 1.1045
diff -u -r1.1045 ChangeLog
--- src/ChangeLog 17 Feb 2007 15:55:21 -0000 1.1045
+++ src/ChangeLog 19 Feb 2007 13:50:33 -0000
@@ -0,0 +1,8 @@
+2007-02-19 Stephen J. Turnbull <stephen(a)xemacs.org>
+
+ * specifier.c (Fdevice_matching_specifier_tag_list):
+ Don't take XCDR of possible non-cons. Avoids crash in VM introduced
+ or unmasked by Aidan's 2007-02-06 patch.
+
+ (setup_device_initial_specifier_tags): Nuke unused variable.
+
Index: src/specifier.c
===================================================================
RCS file: /pack/xemacscvs/XEmacs/xemacs/src/specifier.c,v
retrieving revision 1.52
diff -u -r1.52 specifier.c
--- src/specifier.c 6 Feb 2007 20:01:42 -0000 1.52
+++ src/specifier.c 19 Feb 2007 13:50:35 -0000
@@ -1293,7 +1293,7 @@
{
Lisp_Object rest, rest2;
Lisp_Object device = wrap_device (d);
- Lisp_Object device_predicate, charset_predicate;
+ Lisp_Object device_predicate;
int list_len;
DEVICE_USER_DEFINED_TAGS (d) = Fcopy_alist (Vuser_defined_tags);
@@ -1395,7 +1395,7 @@
LIST_LOOP (rest, DEVICE_USER_DEFINED_TAGS (d))
{
- if (!NILP (XCADR (XCAR (rest))))
+ if (!NILP (XCDR (XCAR (rest))))
list = Fcons (XCAR (XCAR (rest)), list);
}
_______________________________________________
XEmacs-Patches mailing list
XEmacs-Patches(a)xemacs.org
http://calypso.tux.org/cgi-bin/mailman/listinfo/xemacs-patches