Problem in xml-type-tags

For the Compleat Fan
Locked
Jeff
Posts: 604
Joined: Sat Apr 07, 2007 2:23 pm
Location: Ohio
Contact:

Problem in xml-type-tags

Post by Jeff »

I'm working on an application where I need to frequently alter the xml-type-tags and want to return to a default, so I wrote a macro, with-xml-type-tags:

Code: Select all

(define-macro (with-xml-type-tags)
  (letex ((old-tags (xml-type-tags))
          (new-tags (args 0))
          (body (cons 'begin (rest (args)))))
    (apply 'xml-type-tags 'new-tags)
    (let ((res body))
      (apply 'xml-type-tags 'old-tags)
      res)))
I'm getting some odd results using it:

Code: Select all

(println "1: " (xml-type-tags))
(println "2: "
  (with-xml-type-tags (nil nil nil nil)
    (xml-type-tags)))
(println "3: " (xml-type-tags))
...prints out:

Code: Select all

1: ("TEXT" "CDATA" "COMMENT" "ELEMENT") ; before macro
2: (nil nil nil nil) ; in macro body
3: ("\000\0005{" "COMME" "ELEMENT" "\000\0005{\000\000\000") ; after macro
That looks like some sort of weird alignment problem... any ideas?
Jeff
=====
Old programmers don't die. They just parse on...

Artful code

Lutz
Posts: 5289
Joined: Thu Sep 26, 2002 4:45 pm
Location: Pasadena, California
Contact:

Post by Lutz »

The problem is with the xml-type-tags, which only accepts constants safely.

Until this is fixed the only safe way is, to use xml-type-tags with constants as parameters.

I will release a fix soon as a development release.

Locked