From 651ed94280e4b88bf4fb69be0451cf2766ec9ab0 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Fri, 4 Nov 2005 00:23:01 +0000 Subject: re PR preprocessor/22042 (stringification BUG) 2005-11-03 Andrew Pinski PR preprocessor/22042 * macro.c (_cpp_builtin_macro_text): Lower the needed max buffer size. (cpp_quote_string): Don't octalify non printable charactors. 2005-11-03 Andrew Pinski PR preprocessor/22042 * gcc.dg/cpp/strify4.c: New test. From-SVN: r106463 --- libcpp/macro.c | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) (limited to 'libcpp/macro.c') diff --git a/libcpp/macro.c b/libcpp/macro.c index 13f5c76..a0aa93e 100644 --- a/libcpp/macro.c +++ b/libcpp/macro.c @@ -139,7 +139,7 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node) name = map->to_file; len = strlen (name); - buf = _cpp_unaligned_alloc (pfile, len * 4 + 3); + buf = _cpp_unaligned_alloc (pfile, len * 2 + 3); result = buf; *buf = '"'; buf = cpp_quote_string (buf + 1, (const unsigned char *) name, len); @@ -292,9 +292,8 @@ builtin_macro (cpp_reader *pfile, cpp_hashnode *node) } /* Copies SRC, of length LEN, to DEST, adding backslashes before all - backslashes and double quotes. Non-printable characters are - converted to octal. DEST must be of sufficient size. Returns - a pointer to the end of the string. */ + backslashes and double quotes. DEST must be of sufficient size. + Returns a pointer to the end of the string. */ uchar * cpp_quote_string (uchar *dest, const uchar *src, unsigned int len) { @@ -308,15 +307,7 @@ cpp_quote_string (uchar *dest, const uchar *src, unsigned int len) *dest++ = c; } else - { - if (ISPRINT (c)) - *dest++ = c; - else - { - sprintf ((char *) dest, "\\%03o", c); - dest += 4; - } - } + *dest++ = c; } return dest; -- cgit v1.1