From 46c839a03ddb07dd7266e9b826a24eafa242dfbf Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Thu, 14 Jun 2018 20:00:07 -0700 Subject: [PATCH] labels: allocation of a segment number counts as a change If we allocate a new segment number, that has to cause global_offset_changed to be incremented. Thus, we should not update lptr->defn.segment until that would ordinarily be done. Signed-off-by: H. Peter Anvin --- asm/labels.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/asm/labels.c b/asm/labels.c index ccdedace..88edc9ed 100644 --- a/asm/labels.c +++ b/asm/labels.c @@ -424,11 +424,8 @@ void define_label(const char *label, int32_t segment, nasm_error(ERR_WARNING, "label `%s' defined on pass two", label); } - if (!segment) { - segment = lptr->defn.segment; - if (!segment) - segment = lptr->defn.segment = seg_alloc(); - } + if (!segment) + segment = lptr->defn.segment ? lptr->defn.segment : seg_alloc(); if (lptr->defn.defined || lptr->defn.type == LBL_BACKEND) { /* We have seen this on at least one previous pass */