http://d.puremagic.com/issues/show_bug.cgi?id=3560
Don <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Version|2.036 |D1 & D2 Summary|foreach on closure |foreach over nested |corrupted after function |function generates wrong |call |code --- Comment #3 from Don <[email protected]> 2010-07-14 12:41:39 PDT --- It doesn't even need a function call, and doesn't need a closure. Anything which modifies the EAX register before the foreach will do it. This test case generates bad code (runtime segfault) even on D1 (even old versions, eg D1.020). The inner function assumes that EAX contains the context pointer, but the foreach code doesn't set EAX. Instead, it's passing the context pointer in EBX. ===================== void main() { int localvar = 7; int inner(int delegate(ref int) dg) { int k = localvar; return 0; } int a = localvar * localvar; // This modifies the EAX register foreach (entry; &inner) { } } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
