]> git.kaiwu.me - njs.git/commitdiff
Allocating njs_lexer_t on stack.
authorhongzhidao <hongzhidao@gmail.com>
Sat, 16 Feb 2019 15:18:43 +0000 (23:18 +0800)
committerhongzhidao <hongzhidao@gmail.com>
Sat, 16 Feb 2019 15:18:43 +0000 (23:18 +0800)
njs/njs.c

index b8ceea0c103e86003a45efffba9da62071cbbc56..2560c1aa491a288a3dbe923f95a882124172d788 100644 (file)
--- a/njs/njs.c
+++ b/njs/njs.c
@@ -217,7 +217,7 @@ nxt_int_t
 njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end)
 {
     nxt_int_t        ret;
-    njs_lexer_t      *lexer;
+    njs_lexer_t      lexer;
     njs_parser_t     *parser, *prev;
     njs_generator_t  generator;
 
@@ -233,17 +233,15 @@ njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end)
     prev = vm->parser;
     vm->parser = parser;
 
-    lexer = nxt_mp_zalloc(vm->mem_pool, sizeof(njs_lexer_t));
-    if (nxt_slow_path(lexer == NULL)) {
-        return NJS_ERROR;
-    }
+    nxt_memzero(&lexer, sizeof(njs_lexer_t));
+
+    lexer.start = *start;
+    lexer.end = end;
+    lexer.line = 1;
+    lexer.file = vm->options.file;
+    lexer.keywords_hash = vm->shared->keywords_hash;
 
-    parser->lexer = lexer;
-    lexer->start = *start;
-    lexer->end = end;
-    lexer->line = 1;
-    lexer->file = vm->options.file;
-    lexer->keywords_hash = vm->shared->keywords_hash;
+    parser->lexer = &lexer;
 
     if (vm->backtrace != NULL) {
         nxt_array_reset(vm->backtrace);
@@ -261,7 +259,7 @@ njs_vm_compile(njs_vm_t *vm, u_char **start, u_char *end)
         goto fail;
     }
 
-    *start = parser->lexer->start;
+    *start = lexer.start;
 
     /*
      * Reset the code array to prevent it from being disassembled