diff options
Diffstat (limited to 'Build/source/texk/web2c/lib/texmfmp.c')
-rw-r--r-- | Build/source/texk/web2c/lib/texmfmp.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/Build/source/texk/web2c/lib/texmfmp.c b/Build/source/texk/web2c/lib/texmfmp.c index 75c846a339b..bc912276052 100644 --- a/Build/source/texk/web2c/lib/texmfmp.c +++ b/Build/source/texk/web2c/lib/texmfmp.c @@ -2288,12 +2288,13 @@ input_line (FILE *f) long position = ftell (f); if (position == 0L) { /* Detect and skip Byte order marks. */ - int k1 = getc (f); + int k1, k2, k3, k4; + k1 = getc (f); if (k1 != 0xff && k1 != 0xfe && k1 != 0xef) rewind (f); else { - int k2 = getc (f); + k2 = getc (f); if (k2 != 0xff && k2 != 0xfe && k2 != 0xbb) rewind (f); @@ -2301,10 +2302,10 @@ input_line (FILE *f) (k1 == 0xfe && k2 == 0xff)) /* UTF-16(BE) */ ; else { - int k3 = getc (f); - - if (k1 == 0xef && k2 == 0xbb && k3 == 0xbf) /* UTF-8 */ - ; + k3 = getc (f); + k4 = getc (f); + if (k1 == 0xef && k2 == 0xbb && k3 == 0xbf && (0 <= k4 <= 0x7e)) /* UTF-8 */ + ungetc (k4, f); else rewind (f); } |