]> git.kaiwu.me - njs.git/commitdiff
Improved exception creation.
authorhongzhidao <hongzhidao@gmail.com>
Sun, 3 Feb 2019 21:26:42 +0000 (05:26 +0800)
committerhongzhidao <hongzhidao@gmail.com>
Sun, 3 Feb 2019 21:26:42 +0000 (05:26 +0800)
njs/njs.c
njs/njs_error.c
njs/njs_error.h
njs/njs_vm.c

index 2085241a1b5599b0dfe5697548bfb9b428de7589..c7d4d4d0fed460fc4d651df3891d0d80bfaf8a95 100644 (file)
--- a/njs/njs.c
+++ b/njs/njs.c
@@ -652,7 +652,7 @@ njs_vm_retval_set(njs_vm_t *vm, const njs_value_t *value)
 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);
 }
 
 
index 7459f197726cd9b30e356f9bb8dda117e99ccac2..4f0259d60e4814fd2ed48c78c622d39720f8f135 100644 (file)
@@ -15,33 +15,19 @@ static const njs_value_t  njs_error_name_string = njs_string("name");
 
 
 void
-njs_exception_error_create(njs_vm_t *vm, njs_value_type_t type,
-    const char* fmt, ...)
+njs_error_new(njs_vm_t *vm, njs_value_type_t type, u_char *start, size_t size)
 {
-    size_t        size;
-    va_list       args;
     nxt_int_t     ret;
     njs_value_t   string;
     njs_object_t  *error;
-    u_char        buf[256], *p;
-
-    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);
+    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;
@@ -50,6 +36,25 @@ njs_exception_error_create(njs_vm_t *vm, njs_value_type_t type,
 }
 
 
+void
+njs_exception_error_create(njs_vm_t *vm, njs_value_type_t type,
+    const char* fmt, ...)
+{
+    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);
+    }
+
+    njs_error_new(vm, type, buf, p - buf);
+}
+
+
 nxt_noinline 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)
@@ -467,7 +472,7 @@ const njs_object_init_t  njs_uri_error_constructor_init = {
 
 
 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_value_t *value)
 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;
 }
index 0cd724fadc189435ee6a5ba279f1e9be124e9c1d..540eea21a7429bd4034e41e2b03840383ae5b904 100644 (file)
 #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);
index 083a34bfb960506099ac0e5fb2ad1a389440b482..deb4fbd6cd547b8c1fa8483fd725acdbf39e694f 100644 (file)
@@ -3358,7 +3358,7 @@ njs_value_error_set(njs_vm_t *vm, njs_value_t *value, const char *fmt, ...)
 
 memory_error:
 
-    njs_set_memory_error(vm, value);
+    njs_memory_error_set(vm, value);
 }