From: Vadim Zhestikov Date: Tue, 21 Nov 2023 14:49:30 +0000 (-0800) Subject: Fixed memory overlapping. X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=62d0d45611cf8eaab28ec7a64d4bb9b12b3513c0;p=njs.git Fixed memory overlapping. --- diff --git a/src/njs_iterator.c b/src/njs_iterator.c index a78d1ace..2f8b757a 100644 --- a/src/njs_iterator.c +++ b/src/njs_iterator.c @@ -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); } diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index 014f8103..951f24d9 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -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") },