1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-13 16:38:14 +00:00

* xml.el (xml-parse-region): Avoid infloop (Bug#5281).

This commit is contained in:
Chong Yidong 2010-06-30 16:34:06 -04:00
parent 3d8416fce9
commit 01b229d127
2 changed files with 18 additions and 12 deletions

View File

@ -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)

View File

@ -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))