static int njs_regexp_pattern_compile(njs_vm_t *vm, nxt_regex_t *regex, u_char *source, int options) { uint32_t size; nxt_int_t ret; u_char buf[NJS_EXCEPTION_BUF_LENGTH]; /* Zero length means a zero-terminated string. */ ret = nxt_regex_compile(regex, source, 0, options, vm->regex_context); if (nxt_fast_path(ret == NXT_OK)) { return regex->ncaptures; } if (vm->parser != NULL) { size = snprintf((char *) buf, NJS_EXCEPTION_BUF_LENGTH, "SyntaxError: %s in %u", vm->regex_context->error, vm->parser->lexer->line); } else { size = snprintf((char *) buf, NJS_EXCEPTION_BUF_LENGTH, "SyntaxError: %s", vm->regex_context->error); } return njs_vm_throw_exception(vm, buf, size); }
static int njs_regexp_pattern_compile(njs_vm_t *vm, nxt_regex_t *regex, u_char *source, int options) { nxt_int_t ret; nxt_trace_handler_t handler; handler = vm->trace.handler; vm->trace.handler = njs_regexp_compile_trace_handler; /* Zero length means a zero-terminated string. */ ret = nxt_regex_compile(regex, source, 0, options, vm->regex_context); vm->trace.handler = handler; if (nxt_fast_path(ret == NXT_OK)) { return regex->ncaptures; } return ret; }