aboutsummaryrefslogtreecommitdiff
path: root/src/njs_json.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/njs_json.c')
-rw-r--r--src/njs_json.c28
1 files changed, 16 insertions, 12 deletions
diff --git a/src/njs_json.c b/src/njs_json.c
index e79b1eb4..49c2b7e7 100644
--- a/src/njs_json.c
+++ b/src/njs_json.c
@@ -394,12 +394,6 @@ njs_json_parse_object(njs_json_parse_ctx_t *ctx, njs_value_t *value,
return NULL;
}
- prop = njs_object_prop_alloc(ctx->vm, &prop_value, 1);
- if (njs_slow_path(prop == NULL)) {
- goto memory_error;
- }
-
- lhq.value = prop;
lhq.key_hash = prop_name.atom_id;
lhq.replace = 1;
lhq.pool = ctx->pool;
@@ -411,6 +405,14 @@ njs_json_parse_object(njs_json_parse_ctx_t *ctx, njs_value_t *value,
return NULL;
}
+ prop = lhq.value;
+
+ prop->type = NJS_PROPERTY;
+ prop->enumerable = 1;
+ prop->configurable = 1;
+ prop->writable = 1;
+ prop->u.value = prop_value;
+
p = njs_json_skip_space(p, ctx->end);
if (njs_slow_path(p == ctx->end)) {
goto error_end;
@@ -1609,12 +1611,6 @@ njs_json_wrap_value(njs_vm_t *vm, njs_value_t *wrapper,
wrapper->type = NJS_OBJECT;
wrapper->data.truth = 1;
- prop = njs_object_prop_alloc(vm, value, 1);
- if (njs_slow_path(prop == NULL)) {
- return NULL;
- }
-
- lhq.value = prop;
lhq.key_hash = NJS_ATOM_STRING_empty;
lhq.replace = 0;
lhq.pool = vm->mem_pool;
@@ -1625,6 +1621,14 @@ njs_json_wrap_value(njs_vm_t *vm, njs_value_t *wrapper,
return NULL;
}
+ prop = lhq.value;
+
+ prop->type = NJS_PROPERTY;
+ prop->enumerable = 1;
+ prop->configurable = 1;
+ prop->writable = 1;
+ prop->u.value = *value;
+
return wrapper->data.u.object;
}