Well, you are wrong. Variables don't lose their value upon
exiting the block they get their value in (coding would be
much harder if that was the case). Variables lose their
value (or existance) when exiting the block they were
declared (with my) or localized (with local). But that's
not happening in the code you are quoting.