[Bug: 21.5-b28] byte code underflow.

Aidan Kehoe kehoea at parhasard.net
Sun Mar 8 20:04:30 EDT 2009


 Ar an t-ochtú lá de mí Márta, scríobh Aidan Kehoe: 

 > With the following change to lisp/help.el:
 > 
 > diff -r 9c97a5a8c241 lisp/help.el
 > --- a/lisp/help.el	Wed Feb 11 15:30:59 2009 +0000
 > +++ b/lisp/help.el	Sun Mar 08 23:28:41 2009 +0000
 > @@ -1192,9 +1192,12 @@
 >  		 (let* ((doc (documentation function))
 >  			(args (and doc
 >  				   (string-match
 > -				    "[\n\t ]*\narguments: ?(\\(.*\\))\n?\\'"
 > +				    "[\n\t ]*\narguments: ?(\\([^)]*\\))\n?\\'"
 >  				    doc)
 > -				   (match-string 1 doc))))
 > +				   (match-string 1 doc)))
 > +			(args (and args (replace-in-string args
 > +							   #ru"[ ]*\\\u000a[ ]*"
 > +							   " "))))
 >  		   ;; If there are no arguments documented for the
 >  		   ;; subr, rather don't print anything.
 >  		   (cond ((null args) t)
 > 
 > and a recompile and redump, I get
 > 
 > Stack overflow: byte code stack underflow
 > 
 > whenever I type C-x C-f or F1 h or do almost anything. Evaluating (load
 > "help.el") or even (load "help.elc") in *scratch* makes XEmacs usable again.
 > I don’t anticipate getting to fixing this soon, so I’m posting this bug
 > report in case the workaround helps anyone else. 

So it’s not, as I thought, a bug in calling let* with the same symbol
repeated. The below works; something somewhere doesn’t understand raw
strings and really should. 

diff -r 9c97a5a8c241 lisp/help.el
--- a/lisp/help.el	Wed Feb 11 15:30:59 2009 +0000
+++ b/lisp/help.el	Mon Mar 09 00:02:53 2009 +0000
@@ -1192,9 +1192,12 @@
 		 (let* ((doc (documentation function))
 			(args (and doc
 				   (string-match
-				    "[\n\t ]*\narguments: ?(\\(.*\\))\n?\\'"
+				    "[\n\t ]*\narguments: ?(\\([^)]*\\))\n?\\'"
 				    doc)
-				   (match-string 1 doc))))
+				   (match-string 1 doc)))
+                        (args (and args (replace-in-string args
+                                                           "[ ]*\\\\\n[ ]*"
+                                                           " " t))))
 		   ;; If there are no arguments documented for the
 		   ;; subr, rather don't print anything.
 		   (cond ((null args) t)


-- 
¿Dónde estará ahora mi sobrino Yoghurtu Nghe, que tuvo que huir
precipitadamente de la aldea por culpa de la escasez de rinocerontes?




More information about the XEmacs-Beta mailing list