]> git.saurik.com Git - bison.git/commitdiff
* src/print-xml.c (escape_bufs): New static global variable
authorJoel E. Denny <jdenny@ces.clemson.edu>
Sat, 29 Sep 2007 22:36:38 +0000 (22:36 +0000)
committerJoel E. Denny <jdenny@ces.clemson.edu>
Sat, 29 Sep 2007 22:36:38 +0000 (22:36 +0000)
replacing...
(xml_escape_n): ... the static local variable buf here.
(print_xml): Free memory for escape_bufs.
* src/reduce.c (reduce_xml): XML-escape terminal symbol tags.

ChangeLog
src/print-xml.c
src/reduce.c

index ae91903bd6a9d24a33a2f87967fc10b73e2a8817..358179b2e047b5e46e542ad03965e9d46a6b981e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-09-29  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       * src/print-xml.c (escape_bufs): New static global variable
+       replacing...
+       (xml_escape_n): ... the static local variable buf here.
+       (print_xml): Free memory for escape_bufs.
+       * src/reduce.c (reduce_xml): XML-escape terminal symbol tags.
+
 2007-09-25  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        Replace `%push-parser' and `%push-pull-parser' with
index acc481ce53c1ed6b5219c2876003912bac075af0..81f4d803233b204ffc3a7b494da0cf99a2c5e526 100644 (file)
 #include "tables.h"
 
 static bitset no_reduce_set;
+struct escape_buf
+{
+  char *ptr;
+  size_t size;
+};
+static struct escape_buf escape_bufs[2];
 
 
 /*----------------------------.
@@ -516,12 +522,6 @@ xml_printf (FILE *out, int level, char const *fmt, ...)
   fputc ('\n', out);
 }
 
-struct escape_buf
-{
-  char *ptr;
-  size_t size;
-};
-
 static char const *
 xml_escape_string (struct escape_buf *buf, char const *str)
 {
@@ -553,8 +553,7 @@ xml_escape_string (struct escape_buf *buf, char const *str)
 char const *
 xml_escape_n (int n, char const *str)
 {
-  static struct escape_buf buf[2];
-  return xml_escape_string (buf + n, str);
+  return xml_escape_string (escape_bufs + n, str);
 }
 
 char const *
@@ -608,5 +607,8 @@ print_xml (void)
 
   xml_puts (out, 0, "</bison-xml-report>");
 
+  free (escape_bufs[0].ptr);
+  free (escape_bufs[1].ptr);
+
   xfclose (out);
 }
index 0f17bb05a02bc420bae1214f4f276992e1dd4c99..2e309a44bd77081c43d1a9f4e749693603cac1bc 100644 (file)
@@ -418,7 +418,7 @@ reduce_xml (FILE *out, int level)
          b = true;
          xml_printf (out, level + 3,
                      "<terminal>%s</terminal>",
-                     symbols[i]->tag);
+                     xml_escape (symbols[i]->tag));
        }
     if (b)
       xml_puts (out, level + 2, "</terminals>");