summaryrefslogtreecommitdiff
path: root/libguile/read.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/read.c')
-rw-r--r--libguile/read.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/libguile/read.c b/libguile/read.c
index bd028ea52..2140fed25 100644
--- a/libguile/read.c
+++ b/libguile/read.c
@@ -801,7 +801,7 @@ static SCM
scm_read_character (int chr, SCM port)
#define FUNC_NAME "scm_lreadr"
{
- unsigned c;
+ SCM ch;
char charname[READER_CHAR_NAME_MAX_SIZE];
size_t charname_len;
@@ -834,10 +834,9 @@ scm_read_character (int chr, SCM port)
return SCM_MAKE_CHAR (SCM_I_INUM (p));
}
- for (c = 0; c < scm_n_charnames; c++)
- if (scm_charnames[c]
- && (!strncasecmp (scm_charnames[c], charname, charname_len)))
- return SCM_MAKE_CHAR (scm_charnums[c]);
+ ch = scm_i_charname_to_char (charname, charname_len);
+ if (scm_is_true (ch))
+ return ch;
char_error:
scm_i_input_error (FUNC_NAME, port, "unknown character name ~a",