[Issue 17092] New: [REG 2.069.0] cannot access frame pointer of MapResult!(__lambda1, Result).MapResult
    via Digitalmars-d-bugs 
    digitalmars-d-bugs at puremagic.com
       
    Sun Jan 15 09:43:04 PST 2017
    
    
  
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 at puremagic.com
          Reporter: ibuclaw at 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.
--
    
    
More information about the Digitalmars-d-bugs
mailing list