]> git.kaiwu.me - njs.git/commitdiff
Fixed njs_error_new() for UTF8 messages.
authorDmitry Volyntsev <xeioex@nginx.com>
Mon, 5 Aug 2019 14:10:59 +0000 (17:10 +0300)
committerDmitry Volyntsev <xeioex@nginx.com>
Mon, 5 Aug 2019 14:10:59 +0000 (17:10 +0300)
src/njs_error.c

index 1729f3a1de6891be8bcd430198b2c0f78f958667..d770cf88f80ad59a9a40a9d7ca8f8e5fc4bd11b9 100644 (file)
@@ -16,20 +16,27 @@ void
 njs_error_new(njs_vm_t *vm, njs_value_t *dst, njs_value_type_t type,
     u_char *start, size_t size)
 {
+    ssize_t        length;
     njs_int_t     ret;
     njs_value_t   string;
     njs_object_t  *error;
 
-    ret = njs_string_new(vm, &string, start, size, size);
+    length = njs_utf8_length(start, size);
+    if (njs_slow_path(length < 0)) {
+        length = 0;
+    }
+
+    ret = njs_string_new(vm, &string, start, size, length);
     if (njs_slow_path(ret != NJS_OK)) {
         return;
     }
 
     error = njs_error_alloc(vm, type, NULL, &string);
-
-    if (njs_fast_path(error != NULL)) {
-        njs_set_type_object(dst, error, type);
+    if (njs_slow_path(error == NULL)) {
+        return;
     }
+
+    njs_set_type_object(dst, error, type);
 }