From: Theodore Papadopoulo Date: Sun, 4 Oct 1998 21:12:11 +0000 (+0200) Subject: errfn.c (cp_thing): Print buf as a string not as a printf format to avoid problems... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=12a27dfc4e83a8e450b98063efc0b38207050000;p=gcc.git errfn.c (cp_thing): Print buf as a string not as a printf format to avoid problems with the operator%. * errfn.c (cp_thing): Print buf as a string not as a printf format to avoid problems with the operator%. Consequently, `%%' sequences in format are copied as `%' in buf. From-SVN: r22825 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index d803d39328e..86bd8c94724 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +1998-10-04 Theodore Papadopoulo + + * errfn.c (cp_thing): Print buf as a string not as a printf format + to avoid problems with the operator%. Consequently, `%%' sequences + in format are copied as `%' in buf. + 1998-10-04 Jason Merrill * pt.c (pop_tinst_level): Call extract_interface_info. diff --git a/gcc/cp/errfn.c b/gcc/cp/errfn.c index 10de8a9d12b..a43bcf3f0e1 100644 --- a/gcc/cp/errfn.c +++ b/gcc/cp/errfn.c @@ -149,18 +149,15 @@ cp_thing (errfn, atarg1, format, ap) } 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. */ + /* A `%%' has occurred in the input string. Replace it with + a `%' in the formatted message buf. */ - len += 2; - if (len > buflen) + if (++len > buflen) { buflen = len; buf = xrealloc (buf, len); } - strcpy (buf + offset, "%%"); - offset += 2; + buf[offset++] = '%'; } else { @@ -190,10 +187,10 @@ cp_thing (errfn, atarg1, format, ap) { char *file = cp_file_of (atarg); int line = cp_line_of (atarg); - (*errfn) (file, line, buf); + (*errfn) (file, line, "%s", buf); } else - (*errfn) (buf); + (*errfn) ("%s", buf); }