From 3fa882203aefb68c00ebd28ca8b9ed6988e7a1ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= Date: Thu, 23 Sep 2010 22:34:31 +0200 Subject: [PATCH] Fix bug #31081 (`lookahead-u8' returns an s8.) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reported by Göran Weinholt . * libguile/r6rs-ports.c (scm_lookahead_u8): Return an unsigned byte. * test-suite/tests/r6rs-ports.test ("7.2.8 Binary Input")["lookahead-u8: result is unsigned"]: New test. --- THANKS | 1 + libguile/r6rs-ports.c | 4 ++-- test-suite/tests/r6rs-ports.test | 5 +++++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/THANKS b/THANKS index 9e18e5986..3ee51e703 100644 --- a/THANKS +++ b/THANKS @@ -130,6 +130,7 @@ For fixes or providing information which led to a fix: Michael Tuexen Thomas Wawrzinek Mark H. Weaver + Göran Weinholt Jon Wilson Andy Wingo Keith Wright diff --git a/libguile/r6rs-ports.c b/libguile/r6rs-ports.c index 6ad320af4..9576db8be 100644 --- a/libguile/r6rs-ports.c +++ b/libguile/r6rs-ports.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2009 Free Software Foundation, Inc. +/* Copyright (C) 2009, 2010 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License @@ -447,7 +447,7 @@ SCM_DEFINE (scm_lookahead_u8, "lookahead-u8", 1, 0, 0, result = scm_peek_char (port); if (SCM_CHARP (result)) - result = SCM_I_MAKINUM ((signed char) SCM_CHAR (result)); + result = SCM_I_MAKINUM ((unsigned char) SCM_CHAR (result)); else result = SCM_EOF_VAL; diff --git a/test-suite/tests/r6rs-ports.test b/test-suite/tests/r6rs-ports.test index 0b627da1a..7d80ed73d 100644 --- a/test-suite/tests/r6rs-ports.test +++ b/test-suite/tests/r6rs-ports.test @@ -52,6 +52,11 @@ (= (char->integer #\A) (get-u8 port)) (eof-object? (get-u8 port))))) + (pass-if "lookahead-u8: result is unsigned" + ;; Bug #31081. + (let ((port (open-bytevector-input-port #vu8(255)))) + (= (lookahead-u8 port) 255))) + (pass-if "get-bytevector-n [short]" (let* ((port (open-input-string "GNU Guile")) (bv (get-bytevector-n port 4)))