summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2021-03-03 16:05:07 +0100
committerAndy Wingo <wingo@pobox.com>2021-03-03 16:22:56 +0100
commit5ea8c69e9153a970952bf6f0b32c4fad6a28e839 (patch)
tree58e3500da4099a8b054b95a6a7fed68655476c3b
parentc802ed4832ed159b21ac012f65fd49505fcdc6f2 (diff)
downloadguile-5ea8c69e9153a970952bf6f0b32c4fad6a28e839.tar.gz
Invalid charset at EOF does not cause decoding error
* libguile/ports.c (peek_iconv_codepoint): If the input has no bytes, there's little point in raising a decoding error here. Therefore remove the needless iconv acquisition, harmonising with suspendable-ports. * test-suite/tests/ports.test ("port-encoding"): Update test to include some input so that the exception gets raised.
-rw-r--r--libguile/ports.c11
-rw-r--r--test-suite/tests/ports.test2
2 files changed, 3 insertions, 10 deletions
diff --git a/libguile/ports.c b/libguile/ports.c
index 65823f9d7..c25c20709 100644
--- a/libguile/ports.c
+++ b/libguile/ports.c
@@ -1,4 +1,4 @@
-/* Copyright 1995-2001,2003-2004,2006-2019
+/* Copyright 1995-2001,2003-2004,2006-2019,2021
Free Software Foundation, Inc.
This file is part of Guile.
@@ -1948,14 +1948,7 @@ peek_iconv_codepoint (SCM port, SCM *buf, size_t *cur, size_t *len)
*len = input_size;
if (input_size == 0)
/* Normal EOF. */
- {
- /* Make sure iconv descriptors have been opened even if
- there were no bytes, to be sure that a decoding error
- is signalled if the encoding itself was invalid. */
- scm_port_acquire_iconv_descriptors (port, NULL, NULL);
- scm_port_release_iconv_descriptors (port);
- return EOF;
- }
+ return EOF;
/* EOF found in the middle of a multibyte character. */
if (scm_is_eq (SCM_PORT (port)->conversion_strategy,
diff --git a/test-suite/tests/ports.test b/test-suite/tests/ports.test
index 9aa486e98..cd87640ab 100644
--- a/test-suite/tests/ports.test
+++ b/test-suite/tests/ports.test
@@ -1314,7 +1314,7 @@
(pass-if-exception "set-port-encoding!, wrong encoding"
exception:miscellaneous-error
- (let ((p (open-input-string "")))
+ (let ((p (open-input-string "q")))
(set-port-encoding! p "does-not-exist")
(read p)))