Welcome! Log In Create A New Profile

Advanced

[nginx] Win32: support for UTF-16 surrogate pairs (ticket #457).

Maxim Dounin
January 03, 2014 06:50PM
details: http://hg.nginx.org/nginx/rev/1cd23ca84a9b
branches:
changeset: 5501:1cd23ca84a9b
user: Maxim Dounin <mdounin@mdounin.ru>
date: Sat Jan 04 03:32:15 2014 +0400
description:
Win32: support for UTF-16 surrogate pairs (ticket #457).

diffstat:

src/os/win32/ngx_files.c | 23 +++++++++++++++++++++--
1 files changed, 21 insertions(+), 2 deletions(-)

diffs (51 lines):

diff --git a/src/os/win32/ngx_files.c b/src/os/win32/ngx_files.c
--- a/src/os/win32/ngx_files.c
+++ b/src/os/win32/ngx_files.c
@@ -799,13 +799,25 @@ ngx_utf8_to_utf16(u_short *utf16, u_char
continue;
}

+ if (u + 1 == last) {
+ *len = u - utf16;
+ break;
+ }
+
n = ngx_utf8_decode(&p, 4);

- if (n > 0xffff) {
+ if (n > 0x10ffff) {
ngx_set_errno(NGX_EILSEQ);
return NULL;
}

+ if (n > 0xffff) {
+ n -= 0x10000;
+ *u++ = (u_short) (0xd800 + (n >> 10));
+ *u++ = (u_short) (0xdc00 + (n & 0x03ff));
+ continue;
+ }
+
*u++ = (u_short) n;
}

@@ -838,12 +850,19 @@ ngx_utf8_to_utf16(u_short *utf16, u_char

n = ngx_utf8_decode(&p, 4);

- if (n > 0xffff) {
+ if (n > 0x10ffff) {
free(utf16);
ngx_set_errno(NGX_EILSEQ);
return NULL;
}

+ if (n > 0xffff) {
+ n -= 0x10000;
+ *u++ = (u_short) (0xd800 + (n >> 10));
+ *u++ = (u_short) (0xdc00 + (n & 0x03ff));
+ continue;
+ }
+
*u++ = (u_short) n;
}


_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Win32: support for UTF-16 surrogate pairs (ticket #457).

Maxim Dounin 868 January 03, 2014 06:50PM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 165
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready