To my best knowledge, the \xNN escape sequence should expect exactly two hexadecimal digits, but the following program shows that GCC is too greedy:
#include <stdio.h> int main() { static const char t[] = "\x05Data"; for(int i = 0; i != sizeof(t); ++i) { fprintf(stderr, "%02x ", (unsigned) t[i]); } fprintf(stderr, "\n"); } produces: ffffffda 74 61 00 instead of: 05 44 61 74 61 00 i.e. the "Da" from "Data" is also used as a part of the hexadecimal escape sequence. -- Summary: Escape sequence parsing is broken Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: piotr dot wyderski at gmail dot com GCC host triplet: Cygwin/GCC-4.5-20090601 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42459