Hi,
If this bug is discussed before please ignore. Let's consider the test below

; for testing only (use FASM 1.46.9.4)
org 100h
use16
start:
.bar:
if 0
foo: ; should be entirely ignored
end if
.fubar:
jmp .bar ; error
jmp start.bar ; OK
jmp start.fubar ; error
jmp foo.fubar ; OK
jmp foo ; error as expected :)
; end of testing

1. "foo" shouldn't exist at all but actually, it does.
2. "foo" prevents ".bar" from being accessed without its full name ("start.bar")
3. ".fubar" is also extended to "foo.fubar" not "start.fubar"
4. Anyway, "foo" itself is invisible.
Posted on 2003-06-11 08:09:32 by quiveror
This is again one of the problems that emerges from the fasm's internal structure (will be explained fully in the fasmguide docs soon) - local names are processed (attached to their "parent" names) at the parser stage, while the "if" directive is processed at the assembly stage.
Well, it's true that fasm lacks some preprocessor-time "if"-like directive - maybe it's time to think about it...
Posted on 2003-06-12 03:59:49 by Tomasz Grysztar