re PR preprocessor/22042 (stringification BUG)
2005-11-03 Andrew Pinski <pinskia@physics.uc.edu> 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 <pinskia@physics.uc.edu> PR preprocessor/22042 * gcc.dg/cpp/strify4.c: New test. From-SVN: r106463
This commit is contained in:
parent
abe60efd4b
commit
651ed94280
4 changed files with 42 additions and 13 deletions
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue