emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 09eaf66: xml: Properly handle symbol-qnames for att


From: David Engster
Subject: [Emacs-diffs] master 09eaf66: xml: Properly handle symbol-qnames for attribute parsing
Date: Mon, 17 Apr 2017 11:17:19 -0400 (EDT)

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

    xml: Properly handle symbol-qnames for attribute parsing
    
    * lisp/xml.el (xml-parse-attlist): Do not strip 'symbol-qnames from
      xml-ns argument (reverts aea67018) (Bug#26533).
      (xml-maybe-do-ns): Properly handle default namespace by not
      interning new symbol when 'special' flag is set.
    
    * tests/lisp/xml-tests.el (xml-parse-test--namespace-attribute-qnames)
      (xml-parse-namespace-attribute-qnames): Add test for Bug#26533.
---
 lisp/xml.el            |  7 +++----
 test/lisp/xml-tests.el | 15 +++++++++++++++
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/lisp/xml.el b/lisp/xml.el
index be2ac96..88dc70b 100644
--- a/lisp/xml.el
+++ b/lisp/xml.el
@@ -437,6 +437,7 @@ in the XML-NS argument."
                                  (if symbol-qnames (cdr xml-ns) xml-ns)))
                      "")))
        (if (and symbol-qnames
+                 (not special)
                 (not (string= prefix "xmlns")))
            (intern (concat ns lname))
          (cons ns (if special "" lname))))
@@ -646,10 +647,8 @@ 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 ())
-        (symbol-qnames (eq (car-safe xml-ns) 'symbol-qnames))
-        (xml-ns (if symbol-qnames (cdr xml-ns) xml-ns))
-        end-pos name)
+  (let ((attlist ())
+        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 d0da209..16945b0 100644
--- a/test/lisp/xml-tests.el
+++ b/test/lisp/xml-tests.el
@@ -149,6 +149,21 @@ Parser is called with and without 'symbol-qnames 
argument.")
     (should (equal (cdr xml-parse-test--default-namespace-qnames)
                    (xml-parse-region nil nil nil nil 'symbol-qnames)))))
 
+;; Test bug #26533 (proper expansion in prefixed attributes with 
'symbol-qnames)
+(defvar xml-parse-test--namespace-attribute-qnames
+  (cons "<something xmlns:a=\"myns:\"><whatever 
a:b='c'></whatever></something>"
+        '((something
+           ((("http://www.w3.org/2000/xmlns/"; . "a")
+             . "myns:"))
+           (whatever
+            ((myns:b . "c")))))))
+
+(ert-deftest xml-parse-namespace-attribute-qnames ()
+  (with-temp-buffer
+    (insert (car xml-parse-test--namespace-attribute-qnames))
+    (should (equal (cdr xml-parse-test--namespace-attribute-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]