Skip to content

Commit dde4aae

Browse files
committed
Fix #246
1 parent 6bab6fb commit dde4aae

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

peglib.h

+5-4
Original file line numberDiff line numberDiff line change
@@ -4676,9 +4676,9 @@ class parser {
46764676
*---------------------------------------------------------------------------*/
46774677

46784678
inline void enable_tracing(parser &parser, std::ostream &os) {
4679-
size_t prev_pos = 0;
46804679
parser.enable_trace(
4681-
[&](auto &ope, auto s, auto, auto &, auto &c, auto &, auto &) {
4680+
[&](auto &ope, auto s, auto, auto &, auto &c, auto &, auto &trace_data) {
4681+
auto prev_pos = std::any_cast<size_t>(trace_data);
46824682
auto pos = static_cast<size_t>(s - c.s);
46834683
auto backtrack = (pos < prev_pos ? "*" : "");
46844684
std::string indent;
@@ -4695,7 +4695,7 @@ inline void enable_tracing(parser &parser, std::ostream &os) {
46954695
}
46964696
os << "E " << pos + 1 << backtrack << "\t" << indent << "" << name
46974697
<< " #" << c.trace_ids.back() << std::endl;
4698-
prev_pos = static_cast<size_t>(pos);
4698+
trace_data = static_cast<size_t>(pos);
46994699
},
47004700
[&](auto &ope, auto s, auto, auto &sv, auto &c, auto &, auto len,
47014701
auto &) {
@@ -4727,7 +4727,8 @@ inline void enable_tracing(parser &parser, std::ostream &os) {
47274727
<< c.trace_ids.back() << choice.str() << token << matched
47284728
<< std::endl;
47294729
},
4730-
[&](auto &) {}, [&](auto &) {});
4730+
[&](auto &trace_data) { trace_data = static_cast<size_t>(0); },
4731+
[&](auto &) {});
47314732
}
47324733

47334734
/*-----------------------------------------------------------------------------

0 commit comments

Comments
 (0)