njs_generate_global_reference(njs_vm_t *vm, njs_generator_t *generator,
njs_parser_node_t *node, njs_bool_t exception)
{
+ ssize_t length;
njs_int_t ret;
njs_index_t index;
njs_value_t property;
return NJS_ERROR;
}
- ret = njs_string_set(vm, &property, lex_entry->name.start,
- lex_entry->name.length);
+ length = njs_utf8_length(lex_entry->name.start, lex_entry->name.length);
+ if (njs_slow_path(length < 0)) {
+ return NJS_ERROR;
+ }
+
+ ret = njs_string_new(vm, &property, lex_entry->name.start,
+ lex_entry->name.length, length);
if (njs_slow_path(ret != NJS_OK)) {
return NJS_ERROR;
}
{ njs_str("`\\${a}bc"),
njs_str("SyntaxError: Unterminated template literal in 1") },
+ { njs_str("var v = undefined; var u8 = 'α';"
+ "[`undefined${u8}`.length, `undefineQ${u8}`.length]"),
+ njs_str("10,10") },
+
{ njs_str("`text1\ntext2`;"),
njs_str("text1\ntext2") },