From: Enlightenment S. <no-...@en...> - 2011-04-09 02:49:26
|
Log: if we find a \ inside a macro parameter... handle it as an escape and skip it giving the next char verbatim. Author: raster Date: 2011-04-08 19:49:19 -0700 (Fri, 08 Apr 2011) New Revision: 58510 Trac: http://trac.enlightenment.org/e/changeset/58510 Modified: trunk/edje/src/bin/epp/cpplib.c Modified: trunk/edje/src/bin/epp/cpplib.c =================================================================== --- trunk/edje/src/bin/epp/cpplib.c 2011-04-09 02:48:48 UTC (rev 58509) +++ trunk/edje/src/bin/epp/cpplib.c 2011-04-09 02:49:19 UTC (rev 58510) @@ -2031,10 +2031,26 @@ unsigned char *p1 = buf; unsigned char *p2 = buf1; +#if 0 + while (p1 != limit) *p2++ = *p1++; +#else while (p1 != limit) - *p2++ = *p1++; + { + if (*p1 == '\\') + { + p1++; + if (p1 != limit) + *p2++ = *p1++; + } + else + { + *p2++ = *p1++; + } + } +#endif + *p2 = 0; + length = p2 - buf1; } - buf1[length] = 0; ip = cpp_push_buffer(pfile, buf1, length); ip->has_escapes = 1; @@ -2937,9 +2953,11 @@ xbuf_len += args[ap->argno].stringified_length; } else if (ap->raw_before || ap->raw_after || CPP_TRADITIONAL(pfile)) - /* Add 4 for two newline-space markers to prevent - * token concatenation. */ - xbuf_len += args[ap->argno].raw_length + 4; + { + /* Add 4 for two newline-space markers to prevent + * token concatenation. */ + xbuf_len += args[ap->argno].raw_length + 4; + } else { /* We have an ordinary (expanded) occurrence of the arg. |