From: Dmitry Volyntsev Date: Thu, 27 Aug 2020 14:43:19 +0000 (+0000) Subject: Parser: fixed njs_queue_remove() macro usage. X-Git-Tag: 0.4.4~24 X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=b3feffb6b4b6c7e4a9fe3914df0685068bfc8113;p=njs.git Parser: fixed njs_queue_remove() macro usage. The issue caused segfault when NJS_DEBUG is defined. The issue was introduced in 86f55a7dc4a4. --- diff --git a/src/njs_parser.c b/src/njs_parser.c index 5b806190..879459e9 100644 --- a/src/njs_parser.c +++ b/src/njs_parser.c @@ -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); diff --git a/src/njs_parser.h b/src/njs_parser.h index 72e75f8c..62c6e5f3 100644 --- a/src/njs_parser.h +++ b/src/njs_parser.h @@ -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",