ret = njs_get_own_ordered_keys(vm, object, parent, items_sorted, flags);
if (ret != NJS_OK) {
- return NJS_ERROR;
+ goto fail;
}
+ entry = NULL;
njs_set_object(&value, (njs_object_t *) object);
for (i = 0; i< items_sorted->length; i++) {
if (njs_object_enum_kind(flags) != NJS_ENUM_VALUES) {
entry = njs_array_alloc(vm, 0, 2, 0);
if (njs_slow_path(entry == NULL)) {
- return NJS_ERROR;
+ goto fail;
}
njs_string_copy(&entry->start[0], &items_sorted->start[i]);
ret = njs_array_add(vm, items, &retval);
if (njs_slow_path(ret != NJS_OK)) {
- return NJS_ERROR;
+ if (njs_object_enum_kind(flags) != NJS_ENUM_VALUES) {
+ njs_array_destroy(vm, entry);
+ }
+
+ goto fail;
}
}
}
return NJS_OK;
+
+fail:
+
+ njs_array_destroy(vm, items_sorted);
+
+ return NJS_ERROR;
}