From: Dmitry Volyntsev Date: Tue, 12 Feb 2019 15:37:59 +0000 (+0300) Subject: Replacing vsprintf with nxt_vsprintf in modules' exceptions API. X-Git-Tag: 0.2.8~27 X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/static/gitweb.js?a=commitdiff_plain;h=b04d56e0151194e1f31e94531b2f4943960f3711;p=njs.git Replacing vsprintf with nxt_vsprintf in modules' exceptions API. --- diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index 800a9893..7d43d50f 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -1751,8 +1751,7 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, } if (method == n) { - njs_vm_error(vm, "unknown method \"%.*s\"", - (int) method_name.length, method_name.start); + njs_vm_error(vm, "unknown method \"%V\"", &method_name); return NJS_ERROR; } } diff --git a/nginx/ngx_stream_js_module.c b/nginx/ngx_stream_js_module.c index 0fa656e3..cebee745 100644 --- a/nginx/ngx_stream_js_module.c +++ b/nginx/ngx_stream_js_module.c @@ -862,8 +862,7 @@ ngx_stream_js_event(ngx_stream_session_t *s, nxt_str_t *event) } if (i == n) { - njs_vm_error(ctx->vm, "unknown event \"%.*s\"", (int) event->length, - event->start); + njs_vm_error(ctx->vm, "unknown event \"%V\"", event); return NULL; } @@ -1053,8 +1052,7 @@ ngx_stream_js_ext_on(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, } if (*event != NULL) { - njs_vm_error(vm, "event handler \"%.*s\" is already set", - (int) name.length, name.start); + njs_vm_error(vm, "event handler \"%V\" is already set", &name); return NJS_ERROR; } diff --git a/njs/njs_error.c b/njs/njs_error.c index b59c59de..33156848 100644 --- a/njs/njs_error.c +++ b/njs/njs_error.c @@ -15,7 +15,8 @@ static const njs_value_t njs_error_name_string = njs_string("name"); void -njs_error_new(njs_vm_t *vm, njs_value_type_t type, u_char *start, size_t size) +njs_error_new(njs_vm_t *vm, njs_value_t *dst, njs_value_type_t type, + u_char *start, size_t size) { nxt_int_t ret; njs_value_t string; @@ -29,15 +30,16 @@ njs_error_new(njs_vm_t *vm, njs_value_type_t type, u_char *start, size_t size) error = njs_error_alloc(vm, type, NULL, &string); if (nxt_fast_path(error != NULL)) { - vm->retval.data.u.object = error; - vm->retval.type = type; - vm->retval.data.truth = 1; + dst->data.u.object = error; + dst->type = type; + dst->data.truth = 1; } } void -njs_error_fmt_new(njs_vm_t *vm, njs_value_type_t type, const char* fmt, ...) +njs_error_fmt_new(njs_vm_t *vm, njs_value_t *dst, njs_value_type_t type, + const char* fmt, ...) { va_list args; u_char buf[NXT_MAX_ERROR_STR], *p; @@ -50,7 +52,7 @@ njs_error_fmt_new(njs_vm_t *vm, njs_value_type_t type, const char* fmt, ...) va_end(args); } - njs_error_new(vm, type, buf, p - buf); + njs_error_new(vm, dst, type, buf, p - buf); } @@ -65,8 +67,7 @@ njs_error_alloc(njs_vm_t *vm, njs_value_type_t type, const njs_value_t *name, error = nxt_mp_alloc(vm->mem_pool, sizeof(njs_object_t)); if (nxt_slow_path(error == NULL)) { - njs_memory_error(vm); - return NULL; + goto memory_error; } nxt_lvlhsh_init(&error->hash); @@ -86,7 +87,7 @@ njs_error_alloc(njs_vm_t *vm, njs_value_type_t type, const njs_value_t *name, prop = njs_object_prop_alloc(vm, &njs_error_name_string, name, 1); if (nxt_slow_path(prop == NULL)) { - return NULL; + goto memory_error; } lhq.value = prop; @@ -105,7 +106,7 @@ njs_error_alloc(njs_vm_t *vm, njs_value_type_t type, const njs_value_t *name, prop = njs_object_prop_alloc(vm, &njs_error_message_string, message, 1); if (nxt_slow_path(prop == NULL)) { - return NULL; + goto memory_error; } prop->enumerable = 0; @@ -120,6 +121,12 @@ njs_error_alloc(njs_vm_t *vm, njs_value_type_t type, const njs_value_t *name, } return error; + +memory_error: + + njs_memory_error(vm); + + return NULL; } diff --git a/njs/njs_error.h b/njs/njs_error.h index f37f47c4..37fc5c1d 100644 --- a/njs/njs_error.h +++ b/njs/njs_error.h @@ -9,26 +9,32 @@ #define njs_error(vm, fmt, ...) \ - njs_error_fmt_new(vm, NJS_OBJECT_ERROR, fmt, ##__VA_ARGS__) + njs_error_fmt_new(vm, &vm->retval, NJS_OBJECT_ERROR, fmt, ##__VA_ARGS__) #define njs_eval_error(vm, fmt, ...) \ - njs_error_fmt_new(vm, NJS_OBJECT_EVAL_ERROR, fmt, ##__VA_ARGS__) + njs_error_fmt_new(vm, &vm->retval, NJS_OBJECT_EVAL_ERROR, fmt, \ + ##__VA_ARGS__) #define njs_internal_error(vm, fmt, ...) \ - njs_error_fmt_new(vm, NJS_OBJECT_INTERNAL_ERROR, fmt, \ - ##__VA_ARGS__) + njs_error_fmt_new(vm, &vm->retval, NJS_OBJECT_INTERNAL_ERROR, fmt, \ + ##__VA_ARGS__) #define njs_range_error(vm, fmt, ...) \ - njs_error_fmt_new(vm, NJS_OBJECT_RANGE_ERROR, fmt, ##__VA_ARGS__) + njs_error_fmt_new(vm, &vm->retval, NJS_OBJECT_RANGE_ERROR, fmt, \ + ##__VA_ARGS__) #define njs_reference_error(vm, fmt, ...) \ - njs_error_fmt_new(vm, NJS_OBJECT_REF_ERROR, fmt, ##__VA_ARGS__) + njs_error_fmt_new(vm, &vm->retval, NJS_OBJECT_REF_ERROR, fmt, \ + ##__VA_ARGS__) #define njs_syntax_error(vm, fmt, ...) \ - njs_error_fmt_new(vm, NJS_OBJECT_SYNTAX_ERROR, fmt, ##__VA_ARGS__) + njs_error_fmt_new(vm, &vm->retval, NJS_OBJECT_SYNTAX_ERROR, fmt, \ + ##__VA_ARGS__) #define njs_type_error(vm, fmt, ...) \ - njs_error_fmt_new(vm, NJS_OBJECT_TYPE_ERROR, fmt, ##__VA_ARGS__) + njs_error_fmt_new(vm, &vm->retval, NJS_OBJECT_TYPE_ERROR, fmt, \ + ##__VA_ARGS__) #define njs_uri_error(vm, fmt, ...) \ - njs_error_fmt_new(vm, NJS_OBJECT_URI_ERROR, fmt, ##__VA_ARGS__) + njs_error_fmt_new(vm, &vm->retval, NJS_OBJECT_URI_ERROR, fmt, \ + ##__VA_ARGS__) -void njs_error_new(njs_vm_t *vm, njs_value_type_t type, u_char *start, - size_t size); -void njs_error_fmt_new(njs_vm_t *vm, njs_value_type_t type, +void njs_error_new(njs_vm_t *vm, njs_value_t *dst, njs_value_type_t type, + u_char *start, size_t size); +void njs_error_fmt_new(njs_vm_t *vm, njs_value_t *dst, njs_value_type_t type, const char* fmt, ...); void njs_memory_error(njs_vm_t *vm); diff --git a/njs/njs_generator.c b/njs/njs_generator.c index 496e7481..24a80642 100644 --- a/njs/njs_generator.c +++ b/njs/njs_generator.c @@ -3191,5 +3191,5 @@ njs_generate_syntax_error(njs_vm_t *vm, njs_parser_node_t *node, p = nxt_sprintf(p, end, " in %uD", node->token_line); } - njs_error_new(vm, NJS_OBJECT_SYNTAX_ERROR, msg, p - msg); + njs_error_new(vm, &vm->retval, NJS_OBJECT_SYNTAX_ERROR, msg, p - msg); } diff --git a/njs/njs_parser.c b/njs/njs_parser.c index 7141c801..04016d20 100644 --- a/njs/njs_parser.c +++ b/njs/njs_parser.c @@ -2759,5 +2759,5 @@ njs_parser_error(njs_vm_t *vm, njs_parser_t *parser, njs_value_type_t type, p = nxt_sprintf(p, end, " in %uD", lexer->line); } - njs_error_new(vm, type, msg, p - msg); + njs_error_new(vm, &vm->retval, type, msg, p - msg); } diff --git a/njs/njs_vm.c b/njs/njs_vm.c index 8355c16d..a3de3dc4 100644 --- a/njs/njs_vm.c +++ b/njs/njs_vm.c @@ -3329,41 +3329,18 @@ njs_value_data_set(njs_value_t *value, void *data) void njs_value_error_set(njs_vm_t *vm, njs_value_t *value, const char *fmt, ...) { - size_t size; - va_list args; - nxt_int_t ret; - njs_value_t string; - njs_object_t *error; - char buf[256]; + va_list args; + u_char buf[NXT_MAX_ERROR_STR], *p; + + p = buf; if (fmt != NULL) { va_start(args, fmt); - size = vsnprintf(buf, sizeof(buf), fmt, args); + p = nxt_vsprintf(buf, buf + sizeof(buf), fmt, args); va_end(args); - - } else { - size = 0; } - ret = njs_string_new(vm, &string, (u_char *) buf, size, size); - if (nxt_slow_path(ret != NXT_OK)) { - goto memory_error; - } - - error = njs_error_alloc(vm, NJS_OBJECT_ERROR, NULL, &string); - if (nxt_slow_path(error == NULL)) { - goto memory_error; - } - - value->data.u.object = error; - value->type = NJS_OBJECT_ERROR; - value->data.truth = 1; - - return; - -memory_error: - - njs_memory_error_set(vm, value); + njs_error_new(vm, value, NJS_OBJECT_ERROR, buf, p - buf); }