diff options
author | Andy Wingo <wingo@pobox.com> | 2021-03-03 16:05:07 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2021-03-03 16:22:56 +0100 |
commit | 5ea8c69e9153a970952bf6f0b32c4fad6a28e839 (patch) | |
tree | 58e3500da4099a8b054b95a6a7fed68655476c3b | |
parent | c802ed4832ed159b21ac012f65fd49505fcdc6f2 (diff) | |
download | guile-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.c | 11 | ||||
-rw-r--r-- | test-suite/tests/ports.test | 2 |
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))) |