From: Chong Yidong Date: Wed, 30 Jun 2010 20:34:06 +0000 (-0400) Subject: * xml.el (xml-parse-region): Avoid infloop (Bug#5281). X-Git-Tag: emacs-pretest-23.2.90~139^2~74 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=01b229d127055ee20a38a1461b29533689e77543;p=emacs.git * xml.el (xml-parse-region): Avoid infloop (Bug#5281). --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b634bcd7896..45d12bff8db 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2010-06-30 Chong Yidong + + * xml.el (xml-parse-region): Avoid infloop (Bug#5281). + 2010-06-29 Leo * emacs-lisp/rx.el (rx): Doc fix. (Bug#6537) diff --git a/lisp/xml.el b/lisp/xml.el index 20b595fd2d7..8e8981ac439 100644 --- a/lisp/xml.el +++ b/lisp/xml.el @@ -321,18 +321,20 @@ If PARSE-NS is non-nil, then QNAMES are expanded." (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))