Welcome! Log In Create A New Profile

Advanced

[njs] Improved exception creation.

Dmitry Volyntsev
February 04, 2019 02:36AM
details: https://hg.nginx.org/njs/rev/83581029a022
branches:
changeset: 754:83581029a022
user: hongzhidao <hongzhidao@gmail.com>
date: Mon Feb 04 05:26:42 2019 +0800
description:
Improved exception creation.

diffstat:

njs/njs.c | 2 +-
njs/njs_error.c | 55 ++++++++++++++++++++++++++++++-------------------------
njs/njs_error.h | 4 +++-
njs/njs_vm.c | 2 +-
4 files changed, 35 insertions(+), 28 deletions(-)

diffs (138 lines):

diff -r d57755edf40b -r 83581029a022 njs/njs.c
--- a/njs/njs.c Sat Feb 02 16:01:39 2019 +0800
+++ b/njs/njs.c Mon Feb 04 05:26:42 2019 +0800
@@ -652,7 +652,7 @@ njs_vm_retval_set(njs_vm_t *vm, const nj
nxt_noinline void
njs_vm_memory_error(njs_vm_t *vm)
{
- njs_set_memory_error(vm, &vm->retval);
+ njs_memory_error_set(vm, &vm->retval);
}


diff -r d57755edf40b -r 83581029a022 njs/njs_error.c
--- a/njs/njs_error.c Sat Feb 02 16:01:39 2019 +0800
+++ b/njs/njs_error.c Mon Feb 04 05:26:42 2019 +0800
@@ -15,38 +15,43 @@ static const njs_value_t njs_error_name


void
+njs_error_new(njs_vm_t *vm, njs_value_type_t type, u_char *start, size_t size)
+{
+ nxt_int_t ret;
+ njs_value_t string;
+ njs_object_t *error;
+
+ ret = njs_string_new(vm, &string, start, size, size);
+ if (nxt_slow_path(ret != NXT_OK)) {
+ return;
+ }
+
+ 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;
+ }
+}
+
+
+void
njs_exception_error_create(njs_vm_t *vm, njs_value_type_t type,
const char* fmt, ...)
{
- size_t size;
- va_list args;
- nxt_int_t ret;
- njs_value_t string;
- njs_object_t *error;
- u_char buf[256], *p;
+ va_list args;
+ u_char buf[256], *p;
+
+ p = buf;

if (fmt != NULL) {
va_start(args, fmt);
p = nxt_vsprintf(buf, buf + sizeof(buf), fmt, args);
va_end(args);
-
- size = p - buf;
-
- } else {
- size = 0;
}

- ret = njs_string_new(vm, &string, (const u_char *) buf, size, size);
- if (nxt_slow_path(ret != NXT_OK)) {
- return;
- }
-
- 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;
- }
+ njs_error_new(vm, type, buf, p - buf);
}


@@ -467,7 +472,7 @@ const njs_object_init_t njs_uri_error_c


void
-njs_set_memory_error(njs_vm_t *vm, njs_value_t *value)
+njs_memory_error_set(njs_vm_t *vm, njs_value_t *value)
{
njs_object_t *object;
njs_object_prototype_t *prototypes;
@@ -497,7 +502,7 @@ njs_set_memory_error(njs_vm_t *vm, njs_v
void
njs_memory_error(njs_vm_t *vm)
{
- njs_set_memory_error(vm, &vm->retval);
+ njs_memory_error_set(vm, &vm->retval);
}


@@ -505,7 +510,7 @@ njs_ret_t
njs_memory_error_constructor(njs_vm_t *vm, njs_value_t *args,
nxt_uint_t nargs, njs_index_t unused)
{
- njs_set_memory_error(vm, &vm->retval);
+ njs_memory_error_set(vm, &vm->retval);

return NXT_OK;
}
diff -r d57755edf40b -r 83581029a022 njs/njs_error.h
--- a/njs/njs_error.h Sat Feb 02 16:01:39 2019 +0800
+++ b/njs/njs_error.h Mon Feb 04 05:26:42 2019 +0800
@@ -26,11 +26,13 @@
#define njs_uri_error(vm, fmt, ...) \
njs_exception_error_create(vm, 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_exception_error_create(njs_vm_t *vm, njs_value_type_t type,
const char* fmt, ...);

void njs_memory_error(njs_vm_t *vm);
-void njs_set_memory_error(njs_vm_t *vm, njs_value_t *value);
+void njs_memory_error_set(njs_vm_t *vm, njs_value_t *value);

njs_object_t *njs_error_alloc(njs_vm_t *vm, njs_value_type_t type,
const njs_value_t *name, const njs_value_t *message);
diff -r d57755edf40b -r 83581029a022 njs/njs_vm.c
--- a/njs/njs_vm.c Sat Feb 02 16:01:39 2019 +0800
+++ b/njs/njs_vm.c Mon Feb 04 05:26:42 2019 +0800
@@ -3358,7 +3358,7 @@ njs_value_error_set(njs_vm_t *vm, njs_va

memory_error:

- njs_set_memory_error(vm, value);
+ njs_memory_error_set(vm, value);
}


_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[njs] Improved exception creation.

Dmitry Volyntsev 276 February 04, 2019 02:36AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 314
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready