*retval = *setval;
} else {
- external = njs_vm_external(vm, NJS_PROTO_ID_ANY, value);
- if (njs_slow_path(external == NULL)) {
- njs_value_undefined_set(retval);
- return NJS_OK;
- }
-
ov = njs_mp_alloc(vm->mem_pool, sizeof(njs_object_value_t));
if (njs_slow_path(ov == NULL)) {
njs_memory_error(vm);
ov->object.__proto__ = &vm->prototypes[NJS_OBJ_TYPE_OBJECT].object;
ov->object.slots = slots;
+ external = njs_vm_external(vm, NJS_PROTO_ID_ANY, value);
+
njs_set_data(&ov->value, external, njs_value_external_tag(value));
njs_set_object_value(retval, ov);
}
njs_str("false") },
{ njs_str("isFin()"),
- njs_str("ReferenceError: \"isFin\" is not defined") },
+ njs_str("ReferenceError: \"isFin\" is not defined\n"
+ " at main (:1)\n") },
{ njs_str("isNaN(function(){})"),
njs_str("true") },
{ njs_str("$r.bind('XXX', 37); XXX"),
njs_str("37") },
+
+ { njs_str("var fs = require('fs'); fs.readFileSync()"),
+ njs_str("TypeError: \"path\" must be a string or Buffer\n"
+ " at fs.readFileSync (native)\n"
+ " at main (:1)\n") },
};
njs_bool_t module;
njs_uint_t repeat;
njs_bool_t unsafe;
+ njs_bool_t backtrace;
} njs_opts_t;
options.module = opts->module;
options.unsafe = opts->unsafe;
+ options.backtrace = opts->backtrace;
vm = njs_vm_create(&options);
if (vm == NULL) {
njs_unit_test },
{ njs_str("shared"),
- { .externals = 1, .repeat = 128, .unsafe = 1 },
+ { .externals = 1, .repeat = 128, .unsafe = 1, .backtrace = 1 },
njs_shared_test,
njs_nitems(njs_shared_test),
njs_unit_test },