diff options
Diffstat (limited to 'src/payload.c')
-rw-r--r-- | src/payload.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/payload.c b/src/payload.c index f6c0a975..45a2ba21 100644 --- a/src/payload.c +++ b/src/payload.c @@ -85,8 +85,12 @@ static void payload_expr_pctx_update(struct proto_ctx *ctx, base = ctx->protocol[left->payload.base].desc; desc = proto_find_upper(base, proto); - assert(left->payload.base + 1 <= PROTO_BASE_MAX); - proto_ctx_update(ctx, left->payload.base + 1, &expr->location, desc); + assert(desc->base <= PROTO_BASE_MAX); + if (desc->base == base->base) { + assert(base->length > 0); + ctx->protocol[base->base].offset += base->length; + } + proto_ctx_update(ctx, desc->base, &expr->location, desc); } static const struct expr_ops payload_expr_ops = { |