コード例 #1
0
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);
}
コード例 #2
0
ファイル: njs_regexp.c プロジェクト: nginx/njs
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;
}