www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 17092] New: [REG 2.069.0] cannot access frame pointer of

https://issues.dlang.org/show_bug.cgi?id=17092

          Issue ID: 17092
           Summary: [REG 2.069.0] cannot access frame pointer of
                    MapResult!(__lambda1, Result).MapResult
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: phobos
          Assignee: nobody puremagic.com
          Reporter: ibuclaw gdcproject.org

From gdc's own testsuite, this stopped being compilable from 2.069 and onwards.
--- void main() { import std.algorithm : map; import std.parallelism : taskPool; import std.range : iota; immutable n = 10000; immutable delta = 1.0 / n; immutable pi = 4.0 * delta * taskPool.reduce!"a + b"( map!((int i) { immutable x = (i - 0.5) * delta; return 1.0 / (1.0 + x * x); })(iota(n))); } --- Introduced by: https://github.com/dlang/phobos/pull/3522 Emplacing `RTask.init` instead of `RTask()` fixes the compiler error, however, as per comment in PR: task[] = RTask.init; has two bugs: 1. RTask is a nested struct, so RTask.init contains null context pointer. 2. That is a block assignment, so there is a possibility to call RTask.~this() on garbage objects (stack allocated buf is initialized by void). I'm not totally convinced that (1) is a problem however. --
Jan 15