diff --git a/src/hammer.c b/src/hammer.c index 66a64957811d69ad144c072cd4dc0432c93f1c78..c257e07278dc58e2c0d4fe3a978a17e8b8a5debf 100644 --- a/src/hammer.c +++ b/src/hammer.c @@ -208,7 +208,14 @@ HParseResult* h_do_parse(const HParser* parser, HParseState *state) { setupLR(parser, state, m->left); return m->left->seed; // BUG: this might not be correct } else { - return m->right; + HParseResult *res = m->right; + + // skip over the previously-parsed input + long long offs = res->bit_length + state->input_stream.bit_offset; + state->input_stream.index += offs >> 3; + state->input_stream.bit_offset = offs & 7; + + return res; } } }