diff --git a/tests/Makefile b/tests/Makefile
index a6f967a87288da206243943a0d86613a2e6cd1a6..00facce3bfea8d3fc449be9cd95b12a9606575b0 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -42,6 +42,7 @@ EXPECT_NAMES=\
 	stdio/setvbuf \
 	stdio/sprintf \
 	stdio/printf_space_pad \
+	stdio/ungetc_multiple \
 	stdlib/a64l \
 	stdlib/alloc \
 	stdlib/atof \
diff --git a/tests/expected/stdio/ungetc_multiple.stderr b/tests/expected/stdio/ungetc_multiple.stderr
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/tests/expected/stdio/ungetc_multiple.stdout b/tests/expected/stdio/ungetc_multiple.stdout
new file mode 100644
index 0000000000000000000000000000000000000000..3b18e512dba79e4c8300dd08aeb37f8e728b8dad
--- /dev/null
+++ b/tests/expected/stdio/ungetc_multiple.stdout
@@ -0,0 +1 @@
+hello world
diff --git a/tests/stdio/ungetc_multiple.c b/tests/stdio/ungetc_multiple.c
new file mode 100644
index 0000000000000000000000000000000000000000..611430489ae61c9088a7b9adc70b4c2a5c4e06ba
--- /dev/null
+++ b/tests/stdio/ungetc_multiple.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+int main() {
+  ungetc('\n', stdin);
+  ungetc('d', stdin);
+  ungetc('l', stdin);
+  ungetc('r', stdin);
+  ungetc('o', stdin);
+  ungetc('w', stdin);
+  ungetc(' ', stdin);
+  ungetc('o', stdin);
+  ungetc('l', stdin);
+  ungetc('l', stdin);
+  ungetc('e', stdin);
+  ungetc('h', stdin);
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+  putchar(getchar());
+}