diff --git a/lang/cem/cpp.ansi/LLlex.c b/lang/cem/cpp.ansi/LLlex.c index 6c0b124f9..64108e1d7 100644 --- a/lang/cem/cpp.ansi/LLlex.c +++ b/lang/cem/cpp.ansi/LLlex.c @@ -252,7 +252,7 @@ garbage: ptok->tk_val = (arith)0; return ptok->tk_symb = INTEGER; } - ptok->tk_str = Malloc(tg - buf); + ptok->tk_str = Malloc((unsigned)(tg - buf)); strcpy(ptok->tk_str, buf); return IDENTIFIER; } diff --git a/lang/cem/cpp.ansi/domacro.c b/lang/cem/cpp.ansi/domacro.c index 86d17b040..9e6aef839 100644 --- a/lang/cem/cpp.ansi/domacro.c +++ b/lang/cem/cpp.ansi/domacro.c @@ -719,7 +719,7 @@ get_text(formals, length) blank = 0; } *length = repl->r_ptr - repl->r_text; - return Realloc(repl->r_text, repl->r_ptr - repl->r_text + 1); + return Realloc(repl->r_text, (unsigned)(repl->r_ptr - repl->r_text +1)); } /* macroeq() decides whether two macro replacement texts are diff --git a/lang/cem/cpp.ansi/input.c b/lang/cem/cpp.ansi/input.c index 62fad6336..a38d67f3c 100644 --- a/lang/cem/cpp.ansi/input.c +++ b/lang/cem/cpp.ansi/input.c @@ -30,7 +30,7 @@ getwdir(fn) return ""; if (p) { *p = '\0'; - fn = Salloc(fn, p - &fn[0] + 1); + fn = Salloc(fn, (unsigned)(p - &fn[0] + 1)); *p = '/'; return fn; } diff --git a/lang/cem/cpp.ansi/preprocess.c b/lang/cem/cpp.ansi/preprocess.c index 025af03e8..f80ec0014 100644 --- a/lang/cem/cpp.ansi/preprocess.c +++ b/lang/cem/cpp.ansi/preprocess.c @@ -186,7 +186,7 @@ preprocess(fn) if (c & 0200) { if (c == EOI) { newline(); - flush(op-_obuf); + flush((int)(op-_obuf)); return; } fatal("non-ascii character read"); @@ -215,30 +215,29 @@ preprocess(fn) case STCHAR: { register int stopc = c; - int escaped; + int escaped = 0; do { - escaped = 0; echo(c); c = GetChar(); if (c == '\n') { + /* the compiler will complain */ break; } else if (c == EOI) { newline(); - flush(op-_obuf); + flush((int)(op-_obuf)); return; } - if (c == '\\') { + if (!escaped && c == '\\') { echo(c); c = GetChar(); if (c == '\n') { ++LineNumber; lineno++; - } - else if (c == '\'') escaped = 1; - } + } else escaped = 1; + } else escaped = 0; } while (escaped || c != stopc); echo(c); if (c == '\n') @@ -389,7 +388,7 @@ int *lineno; for(;;) { if (c == EOI) { newline(); - flush(op - _obuf); + flush((int)(op - _obuf)); op = 0; break; } diff --git a/lang/cem/cpp.ansi/replace.c b/lang/cem/cpp.ansi/replace.c index 487d86d15..7585d266b 100644 --- a/lang/cem/cpp.ansi/replace.c +++ b/lang/cem/cpp.ansi/replace.c @@ -45,7 +45,7 @@ replace(idf) if (!expand_macro(repl, idf)) return 0; InputLevel++; - InsertText(repl->r_text, repl->r_ptr - repl->r_text); + InsertText(repl->r_text, (int)(repl->r_ptr - repl->r_text)); idf->id_macro->mc_flag |= NOREPLACE; repl->r_level = InputLevel; repl->next = ReplaceList;