unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Michael Welsh Duggan <md5i@cs.cmu.edu>
Cc: rms@gnu.org, emacs-devel@gnu.org
Subject: Re: Links in WoMan buffer should not call `man'
Date: Tue, 05 Sep 2006 01:38:57 -0400	[thread overview]
Message-ID: <874pvmx47i.fsf@cs.cmu.edu> (raw)
In-Reply-To: <878xkzvsrm.fsf@cs.cmu.edu> (Michael Welsh Duggan's message of "Tue, 05 Sep 2006 00:31:25 -0400")

Michael Welsh Duggan <md5i@cs.cmu.edu> writes:

> Michael Welsh Duggan <md5i@cs.cmu.edu> writes:
>
>> Michael Welsh Duggan <md5i@cs.cmu.edu> writes:
>>
>>> Juri Linkov <juri@jurta.org> writes:
>>>
>>>>>     the last command typed in the woman's dedicated frame fails with the error
>>>>>     signalled by string-match:
>>>>>
>>>>>       Man-translate-references: Wrong type argument: arrayp, nil
>>>>>
>>>>> How about debugging it?  This sounds like something straightforward
>>>>> to debug.
>>>>
>>>> I narrowed it to the simplest case.  This error occurs only when `M-x man'
>>>> is executed in the *Messages* buffer.  (The shortest key sequence to
>>>> reproduce it: `C-h e M-x man RET man RET')
>>>
>>> I don't know what the correct fix for the underlying problem is (i.e.,
>>> the fact that this doesn't error out in other contexts), but the
>>> problem can be solved by fixing the Man-name-regexp, which is currenly
>>> invalid.  The following is a patch for that.
>>
>> I take my original statement back.  The character I removed was not a
>> hyphen as I expected, but rather a soft-hyphen (U+00AD).  On the other
>> hand, the fact that removing this character fixed the problem might
>> narrow down the problem a bit more.  I will now look into this a bit
>> more deeply.
>
> Some time later, I am realizing that string_match_1 is using
> current_buffer's case table.  Since the string being matched against
> might have nothing to do with the current buffer, this seems
> incorrect.  Is this a red herring?

More data:  The *Message* buffer at dump time has a case_canon_table
with three extra slots, all nil.

(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /usr/local/src/emacs/src/emacs -Q
[Thread debugging using libthread_db enabled]
[New Thread -1213884736 (LWP 28342)]
[Switching to Thread -1213884736 (LWP 28342)]

Breakpoint 10, main (argc=2, argv=0xbf884c74) at emacs.c:843
(gdb) p Vbuffer_alist
$65 = 137906437
(gdb) xcdr
$66 = 0x8384a85
(gdb) xcdr
$67 = 0x8382d55
(gdb) xcar
$68 = 0x8382d4d
(gdb) xcdr
$69 = 0x83beb1c
(gdb) xbuffer
$70 = (struct buffer *) 0x83beb18
(unsigned char *) 0x8389220 "*Messages*"
(gdb) p $70->case_canon_table
$71 = 137940012
(gdb) xchartable
$72 = (struct Lisp_Char_Table *) 0x838cc28
Purpose: "case-table"  3 extra slots
(gdb) p $72->extras[0]
$73 = 137914569
(gdb) pr
nil
(gdb) p $72->extras[1]
$74 = 137914569
(gdb) pr
nil
(gdb) p $72->extras[2]
$75 = 137914569
(gdb) pr
nil

On buffer creation, the buffers case_canon_table gets a
copy of Vascii_downcase_table's second extra slot, which matches (the
first two of this slot's extra elements are also nil).

(gdb) p Vascii_downcase_table
$76 = 137938404
(gdb) xchartable
$77 = (struct Lisp_Char_Table *) 0x838c5e0
Purpose: "case-table"  3 extra slots
(gdb) p $77->extras[1]
$79 = 139808316
(gdb) xchartable 
$80 = (struct Lisp_Char_Table *) 0x8554e38
Purpose: "case-table"  3 extra slots
(gdb) p $80->extras[0]
$85 = 137914569
(gdb) pr
nil
(gdb) p $80->extras[1]
$86 = 137914569
(gdb) pr
nil

I am still trying to figure out what all this means.  Hopefully, this
analysis is useful to someone else.

-- 
Michael Welsh Duggan
(md5i@cs.cmu.edu)

  reply	other threads:[~2006-09-05  5:38 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-25 19:52 Links in WoMan buffer should not call `man' Reiner Steib
2006-08-25 22:14 ` Chong Yidong
2006-08-26 11:36   ` Reiner Steib
2006-08-28 15:42     ` Chong Yidong
2006-08-27 20:12 ` Juri Linkov
2006-08-27 22:28   ` Eli Zaretskii
2006-08-28 22:09   ` Richard Stallman
2006-08-30 10:45     ` Eli Zaretskii
2006-08-30 22:48       ` Juri Linkov
2006-09-02 23:57     ` Juri Linkov
2006-09-04  9:50       ` Richard Stallman
2006-09-04 22:54         ` Juri Linkov
2006-09-05  3:38           ` Michael Welsh Duggan
2006-09-05  3:43             ` Michael Welsh Duggan
2006-09-05  4:31               ` Michael Welsh Duggan
2006-09-05  5:38                 ` Michael Welsh Duggan [this message]
2006-09-05 20:56                   ` Chong Yidong
2006-09-06 19:06                     ` Richard Stallman
2006-09-07 21:15                     ` Richard Stallman
2006-09-06  8:49                 ` Richard Stallman
2006-09-06  8:49           ` Richard Stallman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874pvmx47i.fsf@cs.cmu.edu \
    --to=md5i@cs.cmu.edu \
    --cc=emacs-devel@gnu.org \
    --cc=rms@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).