]> git.kaiwu.me - njs.git/commitdiff
Parser: fixed njs_queue_remove() macro usage.
authorDmitry Volyntsev <xeioex@nginx.com>
Thu, 27 Aug 2020 14:43:19 +0000 (14:43 +0000)
committerDmitry Volyntsev <xeioex@nginx.com>
Thu, 27 Aug 2020 14:43:19 +0000 (14:43 +0000)
The issue caused segfault when NJS_DEBUG is defined.

The issue was introduced in 86f55a7dc4a4.

src/njs_parser.c
src/njs_parser.h

index 5b806190051df2071eae72f51e299454334a1de9..879459e9dcb7174ee94ecaa72d85ada60f903aac 100644 (file)
@@ -480,13 +480,15 @@ njs_parser_not_supported(njs_parser_t *parser, njs_lexer_token_t *token)
 njs_inline njs_int_t
 njs_parser_reject(njs_parser_t *parser)
 {
+    njs_queue_link_t          *link;
     njs_parser_stack_entry_t  *entry;
 
     while (!njs_queue_is_empty(&parser->stack)) {
         entry = njs_queue_link_data(njs_queue_first(&parser->stack),
                                     njs_parser_stack_entry_t, link);
 
-        njs_queue_remove(njs_queue_first(&parser->stack));
+        link = njs_queue_first(&parser->stack);
+        njs_queue_remove(link);
 
         if (!entry->optional) {
             njs_parser_next(parser, entry->state);
index 72e75f8cdac0a3b421d14d7ad2350f6560e896cf..62c6e5f3a705372c1ab4085fe3ccbee25d802c31 100644 (file)
@@ -280,13 +280,14 @@ njs_parser_height(njs_parser_t *parser, njs_queue_link_t *link)
 njs_inline njs_int_t
 njs_parser_stack_pop(njs_parser_t *parser)
 {
+    njs_queue_link_t          *link;
     njs_parser_stack_entry_t  *entry;
 
-
     entry = njs_queue_link_data(njs_queue_first(&parser->stack),
                                 njs_parser_stack_entry_t, link);
 
-    njs_queue_remove(njs_queue_first(&parser->stack));
+    link = njs_queue_first(&parser->stack);
+    njs_queue_remove(link);
 
 #ifdef NJS_PARSER_DEBUG
     njs_printf("  stack_pop(%d)\n",