emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master aea6701: xml: Fix parsing of default namespace with


From: David Engster
Subject: [Emacs-diffs] master aea6701: xml: Fix parsing of default namespace with quoted names
Date: Tue, 24 Jan 2017 21:56:35 +0000 (UTC)

branch: master
commit aea6701839357eb139e29056274996c70f42b860
Author: David Engster <address@hidden>
Commit: David Engster <address@hidden>

    xml: Fix parsing of default namespace with quoted names
    
    * lisp/xml.el (xml-parse-attlist): Properly extract namespace when
      parsing is done with quoted symbol names (bug#23440).
    * test/lisp/xml-tests.el (xml-parse-test--default-namespace-qnames)
      (xml-parse-test-default-namespace-qnames): Test for the above.
---
 lisp/xml.el            |    6 ++++--
 test/lisp/xml-tests.el |   15 +++++++++++++++
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/lisp/xml.el b/lisp/xml.el
index cd801be..be2ac96 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -646,8 +646,10 @@ surpassed `xml-entity-expansion-limit'"))))
 (defun xml-parse-attlist (&optional xml-ns)
   "Return the attribute-list after point.
 Leave point at the first non-blank character after the tag."
-  (let ((attlist ())
-       end-pos name)
+  (let* ((attlist ())
+        (symbol-qnames (eq (car-safe xml-ns) 'symbol-qnames))
+        (xml-ns (if symbol-qnames (cdr xml-ns) xml-ns))
+        end-pos name)
     (skip-syntax-forward " ")
     (while (looking-at (eval-when-compile
                         (concat "\\(" xml-name-re "\\)\\s-*=\\s-*")))
diff --git a/test/lisp/xml-tests.el b/test/lisp/xml-tests.el
index 0f2182a..d0da209 100644
--- a/test/lisp/xml-tests.el
+++ b/test/lisp/xml-tests.el
@@ -134,6 +134,21 @@ Parser is called with and without 'symbol-qnames 
argument.")
                            (append xml-default-ns
                                    '(("F" . "FOOBAR:"))))))))))
 
+;; Test bug #23440 (proper expansion of default namespace)
+; Test data for default namespace
+(defvar xml-parse-test--default-namespace-qnames
+  (cons "<something xmlns=\"myns:\"><whatever></whatever></something>"
+        '((myns:something
+           ((("http://www.w3.org/2000/xmlns/"; . "")
+             . "myns:"))
+           (myns:whatever nil)))))
+
+(ert-deftest xml-parse-test-default-namespace-qnames ()
+  (with-temp-buffer
+    (insert (car xml-parse-test--default-namespace-qnames))
+    (should (equal (cdr xml-parse-test--default-namespace-qnames)
+                   (xml-parse-region nil nil nil nil 'symbol-qnames)))))
+
 ;; Local Variables:
 ;; no-byte-compile: t
 ;; End:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]