[Issue 2043] New: Closure outer variables in nested blocks are not allocated/instantiated correctly.
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Apr 26 13:20:08 PDT 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2043
Summary: Closure outer variables in nested blocks are not
allocated/instantiated correctly.
Product: D
Version: 2.012
Platform: PC
OS/Version: Windows
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: brunodomedeiros+bugz at gmail.com
An outer variable declared in a nested (and scoped) block that is captured by a
closure will be allocated on the heap, but only once per function execution,
instead of once per block execution, which is what makes sense.
See code below:
--- ---
void delegate()[] dgList;
void test() {
foreach(int i; [1, 2, 3]) {
int b = 2;
dgList ~= { writefln(b); };
writefln(&b); // b will be the *same* on each iteration
}
}
---
--
More information about the Digitalmars-d-bugs
mailing list