]> git.kaiwu.me - njs.git/commitdiff
Parser: simplified njs_parser_string_create() using existing API.
authorDmitry Volyntsev <xeioex@nginx.com>
Sat, 1 Oct 2022 00:40:57 +0000 (17:40 -0700)
committerDmitry Volyntsev <xeioex@nginx.com>
Sat, 1 Oct 2022 00:40:57 +0000 (17:40 -0700)
src/njs_parser.c

index 8ed4e1a6365abc79b8ed0cba0c3add03cae69538..05cfaf1709cada5ee2d40a2c8ba690aa598b6ed3 100644 (file)
@@ -8307,32 +8307,19 @@ njs_int_t
 njs_parser_string_create(njs_vm_t *vm, njs_lexer_token_t *token,
     njs_value_t *value)
 {
-    u_char                *dst;
-    size_t                size, length;
-    njs_str_t             *src;
-    const u_char          *p, *end;
-    njs_unicode_decode_t  ctx;
-
-    src = &token->text;
-
-    njs_utf8_decode_init(&ctx);
+    size_t     length;
+    njs_str_t  dst;
 
-    length = njs_utf8_stream_length(&ctx, src->start, src->length, 1, 0, &size);
-
-    dst = njs_string_alloc(vm, value, size, length);
-    if (njs_slow_path(dst == NULL)) {
+    length = njs_decode_utf8_length(&token->text, &dst.length);
+    dst.start = njs_string_alloc(vm, value, dst.length, length);
+    if (njs_slow_path(dst.start == NULL)) {
         return NJS_ERROR;
     }
 
-    p = src->start;
-    end = src->start + src->length;
-
-    njs_utf8_decode_init(&ctx);
-
-    (void) njs_utf8_stream_encode(&ctx, p, end, dst, 1, 0);
+    njs_decode_utf8(&dst, &token->text);
 
-    if (length > NJS_STRING_MAP_STRIDE && size != length) {
-        njs_string_offset_map_init(value->long_string.data->start, size);
+    if (length > NJS_STRING_MAP_STRIDE && dst.length != length) {
+        njs_string_offset_map_init(value->long_string.data->start, dst.length);
     }
 
     return NJS_OK;