diff --git a/lang/cem/cemcom.ansi/replace.c b/lang/cem/cemcom.ansi/replace.c index 9f7a86503..28873ed94 100644 --- a/lang/cem/cemcom.ansi/replace.c +++ b/lang/cem/cemcom.ansi/replace.c @@ -171,7 +171,9 @@ expand_macro(repl, idf) three tokens: + + ID. Therefore a token separator is inserted after the replacement. */ - if (*(repl->r_ptr - 1) != TOKSEP) add2repl(repl, TOKSEP); + if (repl->r_text == repl->r_ptr || *(repl->r_ptr - 1) != TOKSEP) { + add2repl(repl, TOKSEP); + } return 1; } @@ -665,7 +667,7 @@ macro2buffer(repl, idf, args) while (*q) add2repl(repl, *q++); - if (*(repl->r_ptr - 1) != TOKSEP) + if (repl->r_text == repl->r_ptr || *(repl->r_ptr - 1) != TOKSEP) add2repl(repl, TOKSEP); } else { add2repl(repl, *ptr++); diff --git a/lang/cem/cpp.ansi/replace.c b/lang/cem/cpp.ansi/replace.c index 02fcd697e..e5aa73d15 100644 --- a/lang/cem/cpp.ansi/replace.c +++ b/lang/cem/cpp.ansi/replace.c @@ -160,7 +160,9 @@ expand_macro(repl, idf) three tokens: + + ID. Therefore a token separator is inserted after the replacement. */ - if (*(repl->r_ptr -1) != TOKSEP) add2repl(repl, TOKSEP); + if (repl->r_text == repl->r_ptr || *(repl->r_ptr -1) != TOKSEP) { + add2repl(repl, TOKSEP); + } return 1; } @@ -651,7 +653,7 @@ macro2buffer(repl, idf, args) while (*q) add2repl(repl, *q++); - if (*(repl->r_ptr-1) != TOKSEP) + if (repl->r_text == repl->r_ptr || *(repl->r_ptr-1) != TOKSEP) add2repl(repl, TOKSEP); } else { add2repl(repl, *ptr++);