It looks like determine_real_coding_system() should be more careful
about the characters it accepts after the "coding:" cookie.
Here is a patch, only slightly tested, that should fix the problems
with determine_real_coding_system(). Moriaka-san, can you please,
please, review this patch, since you have been working on this code?
Domo arigato.
Michael, perhaps you would like to try this patch?
Index: file-coding.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/file-coding.c,v
retrieving revision 1.7.2.19
diff -u -r1.7.2.19 file-coding.c
--- file-coding.c 1999/09/14 06:50:59 1.7.2.19
+++ file-coding.c 1999/09/22 00:09:31
@@ -1603,6 +1603,16 @@
This function does not automatically fetch subsidiary coding systems;
that should be unnecessary with the explicit eol-type argument. */
+/* String found in files identifying the encoding of the text in that file */
+#define CODING_SYSTEM_COOKIE "coding:"
+
+/* Valid characters in a coding system name */
+#define CODING_SYSTEM_NAME_CHARS \
+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-"
+
+/* Number of bytes of files to examine for coding system cookies */
+#define CODING_SYSTEM_COOKIE_DETECTION_SIZE 4096
+
void
determine_real_coding_system (Lstream *stream, Lisp_Object *codesys_in_out,
enum eol_type *eol_type_in_out)
@@ -1620,46 +1630,48 @@
if (XCODING_SYSTEM_TYPE (*codesys_in_out) == CODESYS_AUTODETECT ||
*eol_type_in_out == EOL_AUTODETECT)
{
- unsigned char random_buffer[4096];
- int nread;
+ unsigned char random_buffer[CODING_SYSTEM_COOKIE_DETECTION_SIZE + 1];
Lisp_Object coding_system = Qnil;
+ int nread = Lstream_read (stream, random_buffer, sizeof (random_buffer) - 1);
- nread = Lstream_read (stream, random_buffer, sizeof (random_buffer));
if (nread)
{
- unsigned char *cp = random_buffer;
+ char *cp = random_buffer;
+ char *buffer_end = random_buffer + nread;
- while (cp < random_buffer + nread)
- {
- if ((*cp++ == 'c') && (cp < random_buffer + nread) &&
- (*cp++ == 'o') && (cp < random_buffer + nread) &&
- (*cp++ == 'd') && (cp < random_buffer + nread) &&
- (*cp++ == 'i') && (cp < random_buffer + nread) &&
- (*cp++ == 'n') && (cp < random_buffer + nread) &&
- (*cp++ == 'g') && (cp < random_buffer + nread) &&
- (*cp++ == ':') && (cp < random_buffer + nread))
+ *buffer_end = '\0';
+
+ for (cp = random_buffer;
+ cp < buffer_end - sizeof (CODING_SYSTEM_COOKIE);
+ cp++)
+ {
+ if (!memcmp (cp,
+ CODING_SYSTEM_COOKIE,
+ sizeof (CODING_SYSTEM_COOKIE) - 1))
{
- unsigned char coding_system_name[4096 - 6];
- unsigned char *np = coding_system_name;
+ size_t n;
- while ( (cp < random_buffer + nread)
- && ((*cp == ' ') || (*cp == '\t')) )
- {
- cp++;
- }
- while ( (cp < random_buffer + nread) &&
- (*cp != ' ') && (*cp != '\t') && (*cp !=
';') )
+ cp += sizeof (CODING_SYSTEM_COOKIE) - 1;
+ /* Skip white space */
+ while (*cp == ' ' || *cp == '\t')
+ cp++;
+
+ n = strspn (cp, CODING_SYSTEM_NAME_CHARS);
+ if (n > 0)
{
- *np++ = *cp++;
+ Bufbyte *coding_system_name = (Bufbyte *) alloca (n + 1);
+
+ memcpy (coding_system_name, cp, n);
+ coding_system_name[n] = '\0';
+ coding_system =
+ Ffind_coding_system (intern (coding_system_name));
+ break;
}
- *np = 0;
- coding_system
- = Ffind_coding_system (intern (coding_system_name));
- break;
}
}
- if (EQ(coding_system, Qnil))
- do{
+
+ if (NILP (coding_system))
+ do {
if (detect_coding_type (&decst, random_buffer, nread,
XCODING_SYSTEM_TYPE (*codesys_in_out)
!= CODESYS_AUTODETECT))
@@ -1668,12 +1680,13 @@
random_buffer, sizeof (random_buffer));
if (!nread)
break;
- } while(1);
+ } while (1);
}
+
*eol_type_in_out = decst.eol_type;
if (XCODING_SYSTEM_TYPE (*codesys_in_out) == CODESYS_AUTODETECT)
{
- if (EQ(coding_system, Qnil))
+ if (NILP (coding_system))
*codesys_in_out = coding_system_from_mask (decst.mask);
else
*codesys_in_out = coding_system;
It may be easier to review the new entire function than the patch to it:
/* String found in files identifying the encoding of the text in that file */
#define CODING_SYSTEM_COOKIE "coding:"
/* Valid characters in a coding system name */
#define CODING_SYSTEM_NAME_CHARS \
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-"
/* Number of bytes of files to examine for coding system cookies */
#define CODING_SYSTEM_COOKIE_DETECTION_SIZE 4096
void
determine_real_coding_system (Lstream *stream, Lisp_Object *codesys_in_out,
enum eol_type *eol_type_in_out)
{
struct detection_state decst;
if (*eol_type_in_out == EOL_AUTODETECT)
*eol_type_in_out = XCODING_SYSTEM_EOL_TYPE (*codesys_in_out);
xzero (decst);
decst.eol_type = *eol_type_in_out;
decst.mask = ~0;
/* If autodetection is called for, do it now. */
if (XCODING_SYSTEM_TYPE (*codesys_in_out) == CODESYS_AUTODETECT ||
*eol_type_in_out == EOL_AUTODETECT)
{
unsigned char random_buffer[CODING_SYSTEM_COOKIE_DETECTION_SIZE + 1];
Lisp_Object coding_system = Qnil;
int nread = Lstream_read (stream, random_buffer, sizeof (random_buffer) - 1);
if (nread)
{
char *cp = random_buffer;
char *buffer_end = random_buffer + nread;
*buffer_end = '\0';
for (cp = random_buffer;
cp < buffer_end - sizeof (CODING_SYSTEM_COOKIE);
cp++)
{
if (!memcmp (cp,
CODING_SYSTEM_COOKIE,
sizeof (CODING_SYSTEM_COOKIE) - 1))
{
size_t n;
cp += sizeof (CODING_SYSTEM_COOKIE) - 1;
/* Skip white space */
while (*cp == ' ' || *cp == '\t')
cp++;
n = strspn (cp, CODING_SYSTEM_NAME_CHARS);
if (n > 0)
{
Bufbyte *coding_system_name = (Bufbyte *) alloca (n + 1);
memcpy (coding_system_name, cp, n);
coding_system_name[n] = '\0';
coding_system =
Ffind_coding_system (intern (coding_system_name));
break;
}
}
}
if (NILP (coding_system))
do {
if (detect_coding_type (&decst, random_buffer, nread,
XCODING_SYSTEM_TYPE (*codesys_in_out)
!= CODESYS_AUTODETECT))
break;
nread = Lstream_read (stream,
random_buffer, sizeof (random_buffer));
if (!nread)
break;
} while (1);
}
*eol_type_in_out = decst.eol_type;
if (XCODING_SYSTEM_TYPE (*codesys_in_out) == CODESYS_AUTODETECT)
{
if (NILP (coding_system))
*codesys_in_out = coding_system_from_mask (decst.mask);
else
*codesys_in_out = coding_system;
}
}
/* If we absolutely can't determine the EOL type, just assume LF. */
if (*eol_type_in_out == EOL_AUTODETECT)
*eol_type_in_out = EOL_LF;
Lstream_rewind (stream);
}
>>>> "MH" == Michael Harnois
<mharnois(a)willinet.net> writes:
MH> I don't know if this will help or not. It occurred to me that if I ran
MH> xemacs under gdb I might get some sort of trace at the next crash.
MH> Fatal error: assertion failed, file /usr/src/xemacs-21.2/src/insdel.c, line 371,
ptr == end
MH> Program received signal SIGABRT, Aborted.
MH> 0x4043b0c1 in kill () from /lib/libc.so.6
MH> (gdb) where
MH> #0 0x4043b0c1 in kill () from /lib/libc.so.6
MH> #1 0x4043ada8 in raise () from /lib/libc.so.6
MH> #2 0x4043c401 in abort () from /lib/libc.so.6
MH> #3 0x809242d in assert_failed (
MH> file=0x8255a80 "/usr/src/xemacs-21.2/src/insdel.c", line=371,
MH> expr=0x8255aa2 "ptr == end") at
/usr/src/xemacs-21.2/src/emacs.c:2679
MH> #4 0x8148ec9 in bytecount_to_charcount (ptr=0xbfff3fb8 "8bit\n\nI\222m",
MH> len=9) at /usr/src/xemacs-21.2/src/insdel.c:371
MH> #5 0x805535d in make_string (contents=0xbfff3fb8 "8bit\n\nI\222m",
length=9)
MH> at /usr/src/xemacs-21.2/src/alloc.c:2131
MH> #6 0x81b15ae in intern (str=0xbfff3fb8 "8bit\n\nI\222m")
MH> at /usr/src/xemacs-21.2/src/symbols.c:164
MH> #7 0x80c41b3 in determine_real_coding_system (stream=0x8a02c38,
MH> codesys_in_out=0xbfff6068, eol_type_in_out=0x8ac884c)
MH> at /usr/src/xemacs-21.2/src/file-coding.c:1656
MH> #8 0x80c4b46 in make_decoding_stream_1 (stream=0x8a02c38, codesys=138476408,
MH> mode=0x8230118 "r") at /usr/src/xemacs-21.2/src/file-coding.c:2105
MH> #9 0x80c4bd7 in make_decoding_input_stream (stream=0x8a02c38,
MH> codesys=138476408) at /usr/src/xemacs-21.2/src/file-coding.c:2116
MH> #10 0x8108f96 in Finsert_file_contents_internal (filename=146822428,
MH> visit=138215092, beg=4097, end=8193, replace=138215092, codesys=138386724,
MH> used_codesys=140106100) at /usr/src/xemacs-21.2/src/fileio.c:2973
MH> #11 0x8099871 in Ffuncall (nargs=8, args=0xbfffe238)
MH> at /usr/src/xemacs-21.2/src/eval.c:3195
MH> #12 0x8064db7 in execute_optimized_program (
MH> program=0xbfffe2b4
"ÀÁ\n\013#\210\f®\022ÅÆ\n\013#®\013Ç\n!®\006\016\b®\002É\211\026\n:«\a\016\n\026\013ª
Ì\016\n!¬\nÍÎ\016\n\"\210Ï\026\nÐ\n\013\016\021\016\022\016\023\016\nÔ&\a\026\013À\207\bLãÿ¿î8\031\bèÂ\177\b",
stack_depth=9,
MH> constants_data=0x859cda0) at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #13 0x8068e00 in Fbyte_code (instructions=140101916, constants=140103056,
MH> stack_depth=19) at /usr/src/xemacs-21.2/src/bytecode.c:2402
MH> #14 0x8098fc1 in Feval (form=140070112) at /usr/src/xemacs-21.2/src/eval.c:2992
MH> #15 0x80963c2 in condition_case_1 (handlers=139645760, bfun=0x80986bc
<Feval>,
MH> barg=140070112, hfun=0x8096444 <run_condition_case_handlers>,
MH> harg=139478316) at /usr/src/xemacs-21.2/src/eval.c:1646
MH> #16 0x809693e in condition_case_3 (bodyform=140070112, var=139478316,
MH> handlers=139645760) at /usr/src/xemacs-21.2/src/eval.c:1724
MH> #17 0x806591f in execute_rare_opcode (stack_ptr=0xbfffe670,
MH> program_ptr=0x859d38a "\210\t\022Ç\nÈ\"É
\036\n\036\013\016\n`\013A@\\À\223\210\016\013«\021Ì\216\212À\036\r\016\013`Î\016\n!\"\210+\013AÎ\016\n!`Z \210*ÏÐ\016\021\016\022\013$¬\027ÓÔp\"«\rÕÖ\016\024×\n!\"!\210ª\005Õ\n!\210\013+\207-a",
opcode=Bcondition_case) at /usr/src/xemacs-21.2/src/bytecode.c:1268
MH> #18 0x8064b5b in execute_optimized_program (
MH> program=0x859d380 "À\211\211\031\032\eÄÅÆ\217\210\t\022Ç\nÈ\"É
\036\n\036\013\016\n`\013A@\\À\223\210\016\013«\021Ì\216\212À\036\r\016\013`Î\016\n!\"\210+\013AÎ\016\n!`Z \210*ÏÐ\016\021\016\022\013$¬\027ÓÔp\"«\rÕÖ\016\024×\n!\"!\210ª\005Õ\n!\210\013+\207-a",
stack_depth=5, constants_data=0x859ce60)
MH> at /usr/src/xemacs-21.2/src/bytecode.c:653
MH> #19 0x8064989 in funcall_compiled_function (fun=140073644, nargs=5,
MH> args=0xbfffe79c) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #20 0x8099915 in Ffuncall (nargs=6, args=0xbfffe798)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #21 0x8064db7 in execute_optimized_program (
MH> program=0x8aa1688 "À\t?\003Â
ÃÀ\211\211\211\t«\004Ī\002\r\t«\tÆ\016\a\016\b\"ª\003\016\b\036\b\035\036\t\036\n\036\013\036\f\036\r\036\016\036\017Ä\016\020\016\021\016\022\016\023\016\024%.\t\207",
stack_depth=11,
MH> constants_data=0x88b0eb0) at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #22 0x8064989 in funcall_compiled_function (fun=143238576, nargs=5,
MH> args=0xbfffe8dc) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #23 0x8099915 in Ffuncall (nargs=6, args=0xbfffe8d8)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #24 0x8064db7 in execute_optimized_program (
MH> program=0x8aa1660 "\b\031Â\013\f\r\016\006\016\a%)\207",
stack_depth=6,
MH> constants_data=0x8655290) at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #25 0x8064989 in funcall_compiled_function (fun=143575324, nargs=4,
MH> args=0xbfffea10) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #26 0x8099915 in Ffuncall (nargs=5, args=0xbfffea0c)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #27 0x8064db7 in execute_optimized_program (
MH> program=0x8b88770
"À\t!<\nÃa«\aÄ\t!\210ª0ÅÆ\036\a\036\b\016\tÄ\tÆ\016\b\211\016\t\\\211\026\b$A@a«\025ÊËÆÃ#?db\210«\n\n«ß\016\b\nW¬Ù*Ã\20721
\221\001",
MH> stack_depth=7, constants_data=0x88eb598)
MH> at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #28 0x8064989 in funcall_compiled_function (fun=143230968, nargs=1,
MH> args=0xbfffeb3c) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #29 0x8099915 in Ffuncall (nargs=2, args=0xbfffeb38)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #30 0x8064db7 in execute_optimized_program (program=0x8b88550
"À\t\n\"\205À",
MH> stack_depth=7, constants_data=0x8aa2cf0)
MH> at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #31 0x8064989 in funcall_compiled_function (fun=145316244, nargs=4,
MH> args=0xbfffec6c) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #32 0x8099915 in Ffuncall (nargs=5, args=0xbfffec68)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #33 0x8064db7 in execute_optimized_program (
MH> program=0x8b883a8
"À\t!\032\013«\016\f@§«\tÅ\f\t\016\006#ª!Ç\nÈ\"\f\t\036\tÊË\016\t\"«\t\016\tÌ\225ÍOª\003\016\t)\nA@\016\006$)\207",
stack_depth=5,
MH> constants_data=0x8a0c0b8) at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #34 0x8064989 in funcall_compiled_function (fun=144013964, nargs=3,
MH> args=0xbfffed9c) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #35 0x8099915 in Ffuncall (nargs=4, args=0xbfffed98)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #36 0x8064db7 in execute_optimized_program (
MH> program=0x8b883f8
"À\t!\211\022\211\e¬\rÄ\035Æ\016\a\t\016\b#)ªjÉÊ\016\a\013\"\016\a\"Ë\tÌ\"Ä\036\r\036\016\036\017Ä\035\016\017«\016\016\a\bÆ\016\017\t\016\b#\026\r)Ð
\210\212Ñ\016\016!¬\005\016\rª3\016\r¬\025\016\022q\210Ó
\210\016\024\036\025Ö\016\016!\210)ת\e\016\r×a«\nØ\t\013\"\210\016\rª\fÙ\tÉ\013\016\a\"\"\210\016\r,)\207",
stack_depth=6, constants_data=0x8aa4140)
MH> at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #37 0x8064989 in funcall_compiled_function (fun=145418164, nargs=3,
MH> args=0xbfffeecc) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #38 0x8099915 in Ffuncall (nargs=4, args=0xbfffeec8)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #39 0x8064db7 in execute_optimized_program (
MH> program=0x8b883a8
"À\t!\032\013«\016\f@§«\tÅ\f\t\016\006#ª!Ç\nÈ\"\f\t\036\tÊË\016\t\"«\t\016\tÌ\225ÍOª\003\016\t)\nA@\016\006$)\207",
stack_depth=5,
MH> constants_data=0x8a0c0b8) at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #40 0x8064989 in funcall_compiled_function (fun=144013964, nargs=3,
MH> args=0xbfffeffc) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #41 0x8099915 in Ffuncall (nargs=4, args=0xbfffeff8)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #42 0x8064db7 in execute_optimized_program (
MH> program=0x8b685f8
"À\t\n\"J\eÄ\t!@Åa«\004ƪ\003\016\a\036\aÈ\0138\036\tÊ\036\013Ê\036\fÊ\036\rÎÄ\t!\211\026\017!¬\005ÐÑ!\210\013«\a\013@Æa«\030Ò\t!¬\023\016\023Ôk«\005Õp!\210ÐÖ\t×\t!#\210Ø\tÆ\"¬\023\016\023Ôk«\005Õp!\210ÐÖ\t×\t!#\210\t\026\031Ê\026\032Û\t!\026\034Ý
\210\016\t«\006Þ\016\t!\210ß\t!«\005\016
\026\rá\211\016\034\016\"\"\016#\"\026\034Ê\026$å\t\016\034\"\210\016&\211\026\013«\017ç\016\034è\016\034\016\013\"\"\026\032ª\bé\t\016*\"\026\013\016\013¬\005ë\202â",
MH> stack_depth=6, constants_data=0x8af3ee8)
MH> at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #43 0x8064989 in funcall_compiled_function (fun=145622652, nargs=3,
MH> args=0xbffff12c) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #44 0x8099915 in Ffuncall (nargs=4, args=0xbffff128)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #45 0x8064db7 in execute_optimized_program (
MH> program=0x8b68ba0
"À\t!¬\fÂ\t\013\"J¬\005ÄÅ!\210ÆÇÈ\t#\210É\t!\036\nË\t!\036\f\016\n\bÍ\t\016\016\016\017#\036\020\016\n¬!Ñ
\210\016\022«\006Ó\016\022!\210ÔÕÖ\"\210×Õ!\210Ø
\210ÙÚ!\210Û\202ô\001\016\020¬4\016\034Ýa«%p\016\022k¬\037Òp!\210\016\f¬\022Þ
\210\016\037q\210à\t!\210áâ!\210ª\006ã\016\f!\210Æäå\"\210æ\202½\001\016\020ça«=\016\034Ýa«\013p\016\022k¬\005Òp!\210\016\022«\006Ó\016\022!\210\016\f¬\024\016\037q\210à\t!\210áâ!\210ÔÁÖ\"\210ª\006ã\016\f!\210èçæ\"\202"...,
stack_depth=6, constants_data=0x8ad1e18)
MH> at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #46 0x8064989 in funcall_compiled_function (fun=145557304, nargs=6,
MH> args=0xbffff25c) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #47 0x8099915 in Ffuncall (nargs=7, args=0xbffff258)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #48 0x8064db7 in execute_optimized_program (
MH> program=0x89f2960
"À\031\n«?À\eÄ\n\r\016\006\016\a\016\b\016\t&\006®\aÀ\025À\211\026\t)\211\021¬#\013Êa«\036\016\013q\210\016\f«\005ÍÎ!\210\nÏ
k¬\aÏ \211\022ªÆÀ\211\022¬Ã\t)\207O@`", stack_depth=8, constants_data=0x8ad1da0)
MH> at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #49 0x8064989 in funcall_compiled_function (fun=145557248, nargs=7,
MH> args=0xbffff39c) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #50 0x8099915 in Ffuncall (nargs=8, args=0xbffff398)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #51 0x8064db7 in execute_optimized_program (
MH> program=0x8b68b08 "\bÁa\n®\003Ã
Ä\211\211\211\035\036\006\036\a\036\b\032\036\t\bÁa«\003Ä\020\n¬\005ÊË!\210ÌÍÎ\n\016\017\"J\211\02588\026\006\b§«\004\bª\e\r«\005\r@ª\024Î\n\016\020\"J\211\026\a\t\016\aAT\016\a@Z\026\bÑ\n\b®\032\016\b§\025\016\bÒÓ\016\006·A!\\ÒÔ\016\006·A!\\ÁU\016\025Ä\016\tÄ\016\026&\a.\006\207",
stack_depth=8, constants_data=0x8a57790)
MH> at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #52 0x8064989 in funcall_compiled_function (fun=145072416, nargs=2,
MH> args=0xbffff4dc) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #53 0x8099915 in Ffuncall (nargs=3, args=0xbffff4d8)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #54 0x8064db7 in execute_optimized_program (program=0x8b68ae8
"À\tÂ\"\207",
MH> stack_depth=3, constants_data=0x8a57800)
MH> at /usr/src/xemacs-21.2/src/bytecode.c:743
MH> #55 0x8064989 in funcall_compiled_function (fun=145072444, nargs=1,
MH> args=0xbffff608) at /usr/src/xemacs-21.2/src/bytecode.c:519
MH> #56 0x8099915 in Ffuncall (nargs=2, args=0xbffff604)
MH> at /usr/src/xemacs-21.2/src/eval.c:3227
MH> #57 0x806aaaa in Fcall_interactively (function=144957588,
MH> record_flag=138215092, keys=138215092)
MH> at /usr/src/xemacs-21.2/src/callint.c:946
MH> #58 0x8098030 in Fcommand_execute (cmd=144957588, record=138215092,
MH> keys=138215092) at /usr/src/xemacs-21.2/src/eval.c:2629
MH> #59 0x80ecb25 in execute_command_event (command_builder=0x868d0e0,
MH> event=144375784) at /usr/src/xemacs-21.2/src/event-stream.c:4343
MH> #60 0x80ed53c in Fdispatch_event (event=144375784)
MH> at /usr/src/xemacs-21.2/src/event-stream.c:4634
MH> #61 0x80752f7 in Fcommand_loop_1 () at /usr/src/xemacs-21.2/src/cmdloop.c:578
MH> #62 0x807502d in command_loop_1 (dummy=138215092)
MH> at /usr/src/xemacs-21.2/src/cmdloop.c:493
MH> #63 0x80963c2 in condition_case_1 (handlers=138215188,
MH> bfun=0x8074fd4 <command_loop_1>, barg=138215092,
MH> hfun=0x8074374 <cmd_error>, harg=138215092)
MH> at /usr/src/xemacs-21.2/src/eval.c:1646
MH> #64 0x8074467 in command_loop_3 () at /usr/src/xemacs-21.2/src/cmdloop.c:255
MH> #65 0x807448b in command_loop_2 (dummy=138215092)
MH> at /usr/src/xemacs-21.2/src/cmdloop.c:266
MH> #66 0x8095ebc in internal_catch (tag=138289308,
MH> func=0x8074480 <command_loop_2>, arg=138215092, threw=0x0)
MH> at /usr/src/xemacs-21.2/src/eval.c:1321
MH> #67 0x8074853 in initial_command_loop (load_me=138215092)
MH> at /usr/src/xemacs-21.2/src/cmdloop.c:304
MH> #68 0x8091091 in xemacs_21_2_b19_i686_pc_linux (argc=1, argv=0xbffffbb4,
MH> envp=0xbffffbbc, restart=0) at /usr/src/xemacs-21.2/src/emacs.c:1762
MH> #69 0x8091880 in voodoo_free_hook (mem=0x1)
MH> at /usr/src/xemacs-21.2/src/emacs.c:2187
MH> #70 0x404352c2 in __libc_start_main () from /lib/libc.so.6
MH> --
MH> Michael D. Harnois, Redeemer Lutheran Church, Washburn, IA
MH> mharnois(a)willinet.net aa0bt(a)aa0bt.ampr.org
MH> God made everything out of nothing, but the nothingness shows
MH> through. -- Paul Valery