diff options
Diffstat (limited to 'src/evaluate.c')
-rw-r--r-- | src/evaluate.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/evaluate.c b/src/evaluate.c index 95469180..581f3641 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -310,8 +310,13 @@ static bool resolve_protocol_conflict(struct eval_ctx *ctx, const struct proto_desc *next = ctx->pctx.protocol[base + 1].desc; if (payload->payload.desc == next) { + ctx->pctx.protocol[base + 1].desc = NULL; + ctx->pctx.protocol[base].desc = next; + ctx->pctx.protocol[base].offset += desc->length; payload->payload.offset += desc->length; return true; + } else if (next) { + return false; } } @@ -321,6 +326,7 @@ static bool resolve_protocol_conflict(struct eval_ctx *ctx, payload->payload.offset += ctx->pctx.protocol[base].offset; list_add_tail(&nstmt->list, &ctx->stmt->list); + ctx->pctx.protocol[base + 1].desc = NULL; return true; } |