Skip to content

Commit 933febc

Browse files
committed
fix dangling reference in parser::Parse
1 parent 0066e60 commit 933febc

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

include/inja/parser.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class Parser {
2929

3030
Lexer lexer;
3131
TemplateStorage& template_storage;
32+
std::vector<Template> template_stash;
3233
const FunctionStorage& function_storage;
3334

3435
Token tok, peek_tok;
@@ -621,7 +622,7 @@ class Parser {
621622
: config(parser_config), lexer(lexer_config), template_storage(template_storage), function_storage(function_storage) {}
622623

623624
Template parse(std::string_view input, std::string_view path) {
624-
auto result = Template(static_cast<std::string>(input));
625+
auto& result = template_stash.emplace_back(Template(static_cast<std::string>(input)));
625626
parse_into(result, path);
626627
return result;
627628
}

single_include/inja/inja.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -1441,6 +1441,7 @@ class Parser {
14411441

14421442
Lexer lexer;
14431443
TemplateStorage& template_storage;
1444+
std::vector<Template> template_stash;
14441445
const FunctionStorage& function_storage;
14451446

14461447
Token tok, peek_tok;
@@ -2033,7 +2034,7 @@ class Parser {
20332034
: config(parser_config), lexer(lexer_config), template_storage(template_storage), function_storage(function_storage) {}
20342035

20352036
Template parse(std::string_view input, std::string_view path) {
2036-
auto result = Template(static_cast<std::string>(input));
2037+
auto& result = template_stash.emplace_back(Template(static_cast<std::string>(input)));
20372038
parse_into(result, path);
20382039
return result;
20392040
}

0 commit comments

Comments
 (0)