Mercurial > emacs
changeset 109288:e24d55cee016
* xml.el (xml-parse-region): Avoid infloop (Bug#5281).
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Wed, 30 Jun 2010 16:34:06 -0400 |
parents | a18863f338c2 |
children | ef318d39a3e6 |
files | lisp/ChangeLog lisp/xml.el |
diffstat | 2 files changed, 18 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Wed Jun 30 10:22:18 2010 -0400 +++ b/lisp/ChangeLog Wed Jun 30 16:34:06 2010 -0400 @@ -1,3 +1,7 @@ +2010-06-30 Chong Yidong <cyd@stupidchicken.com> + + * xml.el (xml-parse-region): Avoid infloop (Bug#5281). + 2010-06-29 Leo <sdl.web@gmail.com> * emacs-lisp/rx.el (rx): Doc fix. (Bug#6537)
--- a/lisp/xml.el Wed Jun 30 10:22:18 2010 -0400 +++ b/lisp/xml.el Wed Jun 30 16:34:06 2010 -0400 @@ -321,18 +321,20 @@ (progn (forward-char -1) (setq result (xml-parse-tag parse-dtd parse-ns)) - (if (and xml result (not xml-sub-parser)) - ;; translation of rule [1] of XML specifications - (error "XML: (Not Well-Formed) Only one root tag allowed") - (cond - ((null result)) - ((and (listp (car result)) - parse-dtd) - (setq dtd (car result)) - (if (cdr result) ; possible leading comment - (add-to-list 'xml (cdr result)))) - (t - (add-to-list 'xml result))))) + (cond + ((null result) + ;; Not looking at an xml start tag. + (forward-char 1)) + ((and xml (not xml-sub-parser)) + ;; Translation of rule [1] of XML specifications + (error "XML: (Not Well-Formed) Only one root tag allowed")) + ((and (listp (car result)) + parse-dtd) + (setq dtd (car result)) + (if (cdr result) ; possible leading comment + (add-to-list 'xml (cdr result)))) + (t + (add-to-list 'xml result)))) (goto-char (point-max)))) (if parse-dtd (cons dtd (nreverse xml))