From 0e721a7e5e754eb556a3fdb314fcb939ba4a883b Mon Sep 17 00:00:00 2001 From: David Hull Date: Thu, 5 Oct 2017 20:48:56 +0000 Subject: [PATCH] Tighten string buffer size calculation in enc_string. When "\u"-escaping a Unicode character, the esc_extra value doesn't need to include the number of bytes in the input string. That is, if a three-byte UTF-8 character is being escaped to a six-byte "\uXXXX" sequence, esc_extra only needs to be increased by 3. --- c_src/encoder.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/c_src/encoder.c b/c_src/encoder.c index e864777..afc3c14 100644 --- a/c_src/encoder.c +++ b/c_src/encoder.c @@ -307,10 +307,7 @@ enc_string(Encoder* e, ERL_NIF_TERM val) if(uval < 0) { return 0; } - esc_extra += utf8_esc_len(uval); - if(ulen < 0) { - return 0; - } + esc_extra += utf8_esc_len(uval) - ulen; } i += ulen; }