Subject: [PATCH] Fix unread-string for characters 0x80 <= c < 0xf0 in UTF-8

From: David Kastrup <[email-masked]>
Date: Tue, 23 Sep 2014 17:10:19 +0200

* libguile/ports.c (scm_ungetc_unlocked): Fix bad reencoding.

The code

(with-input-from-string ""
  (lambda () (unread-string "\"ä\"" (current-input-port)) (read)))

returns "?" instead of "ä".  This bug was introduced in
commit be7ecef05c1eea66f30360f658c610710c5cb22e

Signed-off-by: David Kastrup <[email-masked]>
---
 libguile/ports.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libguile/ports.c b/libguile/ports.c
index 8185d85..3129282 100644
--- a/libguile/ports.c
+++ b/libguile/ports.c
@@ -2139,7 +2139,7 @@ scm_ungetc_unlocked (scm_t_wchar c, SCM port)
 
   if (pti->encoding_mode == SCM_PORT_ENCODING_MODE_UTF8)
     {
-      if (c < 0xf0)
+      if (c < 0x80)
         {
           result_buf[0] = (char) c;
           result = result_buf;
-- 
1.9.1