]> git.kaiwu.me - njs.git/commitdiff
Fixed memory overlapping.
authorVadim Zhestikov <v.zhestikov@f5.com>
Tue, 21 Nov 2023 14:49:30 +0000 (06:49 -0800)
committerVadim Zhestikov <v.zhestikov@f5.com>
Tue, 21 Nov 2023 14:49:30 +0000 (06:49 -0800)
src/njs_iterator.c
src/test/njs_unit_test.c

index a78d1ace6543bfaa6c49f74167ccffbe7fc110fe..2f8b757ad5adb2d39363f292b2405137383d6cf6 100644 (file)
@@ -301,7 +301,6 @@ njs_object_iterate(njs_vm_t *vm, njs_iterator_args_t *args,
     njs_value_t         *value, *entry, prop, character;
     const u_char        *p, *end, *pos;
     njs_string_prop_t   string_prop;
-    njs_object_value_t  *object;
 
     value = njs_value_arg(&args->value);
     from = args->from;
@@ -348,15 +347,7 @@ njs_object_iterate(njs_vm_t *vm, njs_iterator_args_t *args,
 
     if (njs_is_string(value) || njs_is_object_string(value)) {
 
-        if (njs_is_string(value)) {
-            object = njs_object_value_alloc(vm, NJS_OBJ_TYPE_STRING, 0, value);
-            if (njs_slow_path(object == NULL)) {
-                return NJS_ERROR;
-            }
-
-            njs_set_object_value(njs_value_arg(&args->value), object);
-        }
-        else {
+        if (!njs_is_string(value)) {
             value = njs_object_value(value);
         }
 
@@ -461,7 +452,6 @@ njs_object_iterate_reverse(njs_vm_t *vm, njs_iterator_args_t *args,
     njs_value_t         *entry, *value, prop, character;
     const u_char        *p, *end, *pos;
     njs_string_prop_t   string_prop;
-    njs_object_value_t  *object;
 
     value = njs_value_arg(&args->value);
     from = args->from;
@@ -510,15 +500,7 @@ njs_object_iterate_reverse(njs_vm_t *vm, njs_iterator_args_t *args,
 
     if (njs_is_string(value) || njs_is_object_string(value)) {
 
-        if (njs_is_string(value)) {
-            object = njs_object_value_alloc(vm, NJS_OBJ_TYPE_STRING, 0, value);
-            if (njs_slow_path(object == NULL)) {
-                return NJS_ERROR;
-            }
-
-            njs_set_object_value(njs_value_arg(&args->value), object);
-        }
-        else {
+        if (!njs_is_string(value)) {
             value = njs_object_value(value);
         }
 
index 014f8103729835fcfbeb7b6e02969c8a8276f33e..951f24d938bf335259e289788f5d1c555ef00b7b 100644 (file)
@@ -12136,6 +12136,9 @@ static njs_unit_test_t  njs_test[] =
     { njs_str("let e = AggregateError('abc'); e.errors"),
       njs_str("a,b,c") },
 
+    { njs_str("let e = AggregateError('1234567'); e.errors"),
+      njs_str("1,2,3,4,5,6,7") },
+
     { njs_str("let e = AggregateError([1, 2, 3], 'm'); e"),
       njs_str("AggregateError: m") },