summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-01-18 10:43:02 -0800
committerKaz Kylheku <kaz@kylheku.com>2019-01-18 10:43:02 -0800
commita666ae690ad548b5f357e70ed124aa3ab64afa5b (patch)
tree41ef41689b4d7852a65977d53903a57fcca0600c /lib.c
parentfe4a764a7d40c79b25c5fe0278bded857864f416 (diff)
downloadtxr-a666ae690ad548b5f357e70ed124aa3ab64afa5b.tar.gz
txr-a666ae690ad548b5f357e70ed124aa3ab64afa5b.tar.bz2
txr-a666ae690ad548b5f357e70ed124aa3ab64afa5b.zip
mpi: use wchar_t string for text-to-bignum.
* mpi/mpi.c (mp_read_radix): Take const wchar_t * string rather than unsigned char *. (s_mp_tovalue): Take character argument as wchar_t rather than int. * mpi/mpi.h (mp_read_radix): Declaration updated. * lib.c (int_str): Avoid a malloc/free and UTF-8 conversion by passing the original wide string to mp_read_radix. This removes a TODO dating back to December 2011.
Diffstat (limited to 'lib.c')
-rw-r--r--lib.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/lib.c b/lib.c
index a1a203b7..925bf638 100644
--- a/lib.c
+++ b/lib.c
@@ -4600,11 +4600,8 @@ val int_str(val str, val base)
if ((value == LONG_MAX || value == LONG_MIN) && errno == ERANGE) {
val bignum = make_bignum();
- size_t size;
- unsigned char *ucs = utf8_dup_to_buf(wcs, &size, 1);
- mp_err err = mp_read_radix(mp(bignum), ucs, b);
+ mp_err err = mp_read_radix(mp(bignum), wcs, b);
- free(ucs); /* TODO: make wchar_t version of mp_read_radix. */
gc_hint(str);
if (err != MP_OKAY)