diff --git a/bin/x65_win32.zip b/bin/x65_win32.zip index 0614a85..09f4bea 100644 Binary files a/bin/x65_win32.zip and b/bin/x65_win32.zip differ diff --git a/bin/x65_x64.zip b/bin/x65_x64.zip index 6ff774f..b64a5d9 100644 Binary files a/bin/x65_x64.zip and b/bin/x65_x64.zip differ diff --git a/x65.cpp b/x65.cpp index bca0e3b..f4507ce 100644 --- a/x65.cpp +++ b/x65.cpp @@ -4165,7 +4165,8 @@ StatusCode Asm::AddressLabel(strref label) pLabel->constant = constLabel; last_label = label; bool local = label[0]=='.' || label[0]=='@' || label[0]=='!' || label[0]==':' || label.get_last()=='$'; - LabelAdded(pLabel, local || directive_scope_depth>0); // TODO: in named scopes the label can still be referenced outside the scope directive + if (directive_scope_depth > 0) { local = true; } + LabelAdded(pLabel, local); // TODO: in named scopes the label can still be referenced outside the scope directive if (local) { MarkLabelLocal(label); } status = CheckLateEval(label); if (!local && label[0]!=']') { // MERLIN: Variable label does not invalidate local labels @@ -5383,11 +5384,11 @@ StatusCode Asm::ApplyDirective(AssemblerDirective dir, strref line, strref sourc case AD_SCOPE: directive_scope_depth++; - break; + return EnterScope(); case AD_ENDSCOPE: directive_scope_depth--; - break; + return ExitScope(); case AD_DS: return Directive_DS(line);