OSDN Git Service

* errfn.c (cp_thing): Handle the `%%' formatting sequence.
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Jun 1998 10:40:49 +0000 (10:40 +0000)
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 Jun 1998 10:40:49 +0000 (10:40 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@20537 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/cp/ChangeLog
gcc/cp/errfn.c

index d89f0c1..318b733 100644 (file)
@@ -1,3 +1,7 @@
+1998-06-17  Mark Mitchell  <mark@markmitchell.com>
+
+       * errfn.c (cp_thing): Handle the `%%' formatting sequence.
+
 1998-06-17  Jason Merrill  <jason@yorick.cygnus.com>
 
        * method.c (hack_identifier): Complain about getting a namespace
index e5bfdf4..8d20682 100644 (file)
@@ -50,7 +50,8 @@ extern int   cp_line_of PROTO((tree));
 
 #define STRDUP(f) (ap = (char *) alloca (strlen (f) +1), strcpy (ap, (f)), ap)
 
-/* This function supports only `%s', `%d', and the C++ print codes.  */
+/* This function supports only `%s', `%d', `%%', and the C++ print
+   codes.  */
 
 #ifdef __STDC__
 static void
@@ -152,6 +153,21 @@ cp_thing (errfn, atarg1, format, ap)
          strcpy (buf + offset, p);
          offset += plen;
        }
+      else if (*f == '%')
+       {
+         /* A `%%' has occurred in the input string.  Since the
+            string we produce here will be passed to vprintf we must
+            preserve both `%' characters.  */
+
+         len += 2;
+         if (len > buflen)
+           {
+             buflen = len;
+             buf = xrealloc (buf, len);
+           }
+         strcpy (buf + offset, "%%");
+         offset += 2;
+       }
       else
        {
          if (*f != 'd')