mescc: Have ungetc remember 2 positions.
[mes.git] / mlibc.c
diff --git a/mlibc.c b/mlibc.c
index 7d4ebf09b0f224e1c30d607fae9a0c59b094a024..e4442dd8b9c67ed7f1741328267db607471b17d3 100644 (file)
--- a/mlibc.c
+++ b/mlibc.c
@@ -222,6 +222,7 @@ assert_fail (char* s)
 
 
 int ungetc_char = -1;
+char ungetc_buf[2];
 
 int
 getchar ()
@@ -235,10 +236,8 @@ getchar ()
       i = c;
     }
   else
-    {
-      i = ungetc_char;
-      ungetc_char = -1;
-    }
+    i = ungetc_buf[ungetc_char--];
+
   if (i < 0) i += 256;
   return i;
 }
@@ -246,8 +245,8 @@ getchar ()
 int
 ungetc (int c, int fd)
 {
-  assert (ungetc_char == -1);
-  ungetc_char = c;
+  assert (ungetc_char < 2);
+  ungetc_buf[++ungetc_char] = c;
   return c;
 }