Kamil Dudka 8d9eac
diff --git a/src/expand.c b/src/expand.c
Kamil Dudka 8d9eac
index 380e020..310b349 100644
Kamil Dudka 8d9eac
--- a/src/expand.c
Kamil Dudka 8d9eac
+++ b/src/expand.c
Kamil Dudka 8d9eac
@@ -129,15 +129,19 @@ expand (void)
Jakub Martisko ffecc6
 
Jakub Martisko ffecc6
       do
Jakub Martisko ffecc6
         {
Jakub Martisko ffecc6
-          do {
Jakub Martisko ffecc6
+          while (true) {
Jakub Martisko ffecc6
             mbf_getc (c, mbf);
Jakub Martisko ffecc6
-            if (mb_iseof (c))
Jakub Martisko ffecc6
+            if ((mb_iseof (c)) && (fp = next_file (fp)))
Jakub Martisko ffecc6
               {
Jakub Martisko ffecc6
-                mbf_init (mbf, fp = next_file (fp));
Jakub Martisko ffecc6
+                mbf_init (mbf, fp);
Jakub Martisko ffecc6
                 continue;
Jakub Martisko ffecc6
               }
Jakub Martisko ffecc6
+            else
Jakub Martisko ffecc6
+              {
Jakub Martisko ffecc6
+                break;
Jakub Martisko ffecc6
+              }
Jakub Martisko ffecc6
             }
Jakub Martisko ffecc6
-          while (false);
Kamil Dudka 7a7c1a
+
Jakub Martisko ffecc6
 
Jakub Martisko ffecc6
           if (convert)
Jakub Martisko ffecc6
             {
Kamil Dudka 8d9eac
diff --git a/src/unexpand.c b/src/unexpand.c
Kamil Dudka 8d9eac
index 3bbbd66..863a90a 100644
Kamil Dudka 8d9eac
--- a/src/unexpand.c
Kamil Dudka 8d9eac
+++ b/src/unexpand.c
Kamil Dudka 8d9eac
@@ -164,15 +164,19 @@ unexpand (void)
Jakub Martisko ffecc6
 
Jakub Martisko ffecc6
       do
Jakub Martisko ffecc6
         {
Jakub Martisko ffecc6
-          do {
Jakub Martisko ffecc6
+          while (true) {
Jakub Martisko ffecc6
             mbf_getc (c, mbf);
Jakub Martisko ffecc6
-            if (mb_iseof (c))
Jakub Martisko ffecc6
+            if ((mb_iseof (c)) && (fp = next_file (fp)))
Jakub Martisko ffecc6
               {
Jakub Martisko ffecc6
-                mbf_init (mbf, fp = next_file (fp));
Jakub Martisko ffecc6
+                mbf_init (mbf, fp);
Jakub Martisko ffecc6
                 continue;
Jakub Martisko ffecc6
               }
Jakub Martisko ffecc6
+            else
Jakub Martisko ffecc6
+              {
Jakub Martisko ffecc6
+                break;
Jakub Martisko ffecc6
+              }
Jakub Martisko ffecc6
             }
Jakub Martisko ffecc6
-          while (false);
Kamil Dudka 7a7c1a
+
Jakub Martisko ffecc6
 
Jakub Martisko ffecc6
           if (convert)
Jakub Martisko ffecc6
             {
Kamil Dudka 8d9eac
diff --git a/tests/expand/mb.sh b/tests/expand/mb.sh
Kamil Dudka 8d9eac
index 7971e18..031be7a 100755
Kamil Dudka 8d9eac
--- a/tests/expand/mb.sh
Kamil Dudka 8d9eac
+++ b/tests/expand/mb.sh
Jakub Martisko ffecc6
@@ -44,6 +44,20 @@ EOF
Jakub Martisko ffecc6
 expand < in > out || fail=1
Jakub Martisko ffecc6
 compare exp out > /dev/null 2>&1 || fail=1
Jakub Martisko ffecc6
 
Jakub Martisko ffecc6
+#multiple files as an input
Jakub Martisko ffecc6
+cat <<\EOF >> exp || framework_failure_
Jakub Martisko ffecc6
+1234567812345678123456781
Jakub Martisko ffecc6
+.       .       .       .
Jakub Martisko ffecc6
+a       b       c       d
Jakub Martisko ffecc6
+.       .       .       .
Jakub Martisko ffecc6
+ä       ö       ü       ß
Jakub Martisko ffecc6
+.       .       .       .
Jakub Martisko ffecc6
+   äöü  .    öüä.       ä xx
Jakub Martisko ffecc6
+EOF
Jakub Martisko ffecc6
+
Jakub Martisko ffecc6
+expand ./in ./in > out || fail=1
Jakub Martisko ffecc6
+compare exp out > /dev/null 2>&1 || fail=1
Jakub Martisko ffecc6
+
Jakub Martisko ffecc6
 #test characters with display widths != 1
Jakub Martisko ffecc6
 env printf '12345678
Jakub Martisko ffecc6
 e\t|ascii(1)
Kamil Dudka 8d9eac
diff --git a/tests/unexpand/mb.sh b/tests/unexpand/mb.sh
Kamil Dudka 8d9eac
index 60d4c1a..8d75652 100755
Kamil Dudka 8d9eac
--- a/tests/unexpand/mb.sh
Kamil Dudka 8d9eac
+++ b/tests/unexpand/mb.sh
Jakub Martisko ffecc6
@@ -44,6 +44,22 @@ EOF
Jakub Martisko ffecc6
 unexpand -a < in > out || fail=1
Jakub Martisko ffecc6
 compare exp out > /dev/null 2>&1 || fail=1
Jakub Martisko ffecc6
 
Jakub Martisko ffecc6
+
Jakub Martisko ffecc6
+#multiple files as an input
Jakub Martisko ffecc6
+cat >> exp <<\EOF
Jakub Martisko ffecc6
+1234567812345678123456781
Jakub Martisko ffecc6
+.	.	.	.
Jakub Martisko ffecc6
+a	b	c	d
Jakub Martisko ffecc6
+.	.	.	.
Jakub Martisko ffecc6
+ä	ö	ü	ß
Jakub Martisko ffecc6
+.	.	.	.
Jakub Martisko ffecc6
+   äöü	.    öüä.	ä xx
Jakub Martisko ffecc6
+EOF
Jakub Martisko ffecc6
+
Jakub Martisko ffecc6
+
Jakub Martisko ffecc6
+unexpand -a ./in ./in > out || fail=1
Jakub Martisko ffecc6
+compare exp out > /dev/null 2>&1 || fail=1
Jakub Martisko ffecc6
+
Jakub Martisko ffecc6
 #test characters with a display width larger than 1
Jakub Martisko ffecc6
 
Jakub Martisko ffecc6
 env printf '12345678