+2005-11-03 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR preprocessor/22042
+ * gcc.dg/cpp/strify4.c: New test.
+
2005-11-03 Joseph S. Myers <joseph@codesourcery.com>
PR c++/17964
--- /dev/null
+/* { dg-do run } */
+/* Tests we stringify without changing unprintable characts.
+
+ Andrew Pinski */
+
+extern int strcmp (const char *, const char *);
+extern int puts (const char *);
+extern void abort (void);
+#define err(str) do { puts(str); abort(); } while (0)
+
+
+#define S(X) S2(X)
+#define S2(X) #X
+#define TAB " " /* Note there is a tab character here. */
+
+int main (int argc, char *argv[])
+{
+ /* The space before "bar" here is vital. */
+ char a[] = S(S(TAB));
+
+ if (strcmp (a, "\"\\\" \\\"\""))
+ err ("stringification caused octal");
+
+ return 0;
+}
+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 Joseph S. Myers <joseph@codesourcery.com>
PR c++/17964
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);
}
/* 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)
{
*dest++ = c;
}
else
- {
- if (ISPRINT (c))
- *dest++ = c;
- else
- {
- sprintf ((char *) dest, "\\%03o", c);
- dest += 4;
- }
- }
+ *dest++ = c;
}
return dest;