fix segmentation fault
diff --git a/include/inja/parser.hpp b/include/inja/parser.hpp
index 23d869c..348f315 100644
--- a/include/inja/parser.hpp
+++ b/include/inja/parser.hpp
@@ -139,7 +139,7 @@
add_json_literal(tmpl.content.c_str());
}
- // Operator
+ // Operator
} else if (tok.text == "and" || tok.text == "or" || tok.text == "in" || tok.text == "not") {
goto parse_operator;
@@ -268,12 +268,12 @@
} break;
case Token::Kind::RightParen: {
current_paren_level -= 1;
- while (operator_stack.top()->operation != FunctionStorage::Operation::ParenLeft) {
+ while (!operator_stack.empty() && operator_stack.top()->operation != FunctionStorage::Operation::ParenLeft) {
current_expression_list->rpn_output.emplace_back(operator_stack.top());
operator_stack.pop();
}
- if (operator_stack.top()->operation == FunctionStorage::Operation::ParenLeft) {
+ if (!operator_stack.empty() && operator_stack.top()->operation == FunctionStorage::Operation::ParenLeft) {
operator_stack.pop();
}
diff --git a/single_include/inja/inja.hpp b/single_include/inja/inja.hpp
index 6a59abd..ec9937d 100644
--- a/single_include/inja/inja.hpp
+++ b/single_include/inja/inja.hpp
@@ -2851,7 +2851,7 @@
add_json_literal(tmpl.content.c_str());
}
- // Operator
+ // Operator
} else if (tok.text == "and" || tok.text == "or" || tok.text == "in" || tok.text == "not") {
goto parse_operator;
@@ -2980,12 +2980,12 @@
} break;
case Token::Kind::RightParen: {
current_paren_level -= 1;
- while (operator_stack.top()->operation != FunctionStorage::Operation::ParenLeft) {
+ while (!operator_stack.empty() && operator_stack.top()->operation != FunctionStorage::Operation::ParenLeft) {
current_expression_list->rpn_output.emplace_back(operator_stack.top());
operator_stack.pop();
}
- if (operator_stack.top()->operation == FunctionStorage::Operation::ParenLeft) {
+ if (!operator_stack.empty() && operator_stack.top()->operation == FunctionStorage::Operation::ParenLeft) {
operator_stack.pop();
}