digitalmars.D.bugs - [Issue 17368] New: [DIP1000] scope T** implicit convertion to scope
- via Digitalmars-d-bugs (44/44) May 04 2017 https://issues.dlang.org/show_bug.cgi?id=17368
https://issues.dlang.org/show_bug.cgi?id=17368 Issue ID: 17368 Summary: [DIP1000] scope T** implicit convertion to scope T* allow to escape pointer Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: mathias.lang sociomantic.com Code below: ``` void main () safe { getPtr(); } void getPtr () safe { int* ptr2; bar(&ptr2); assert(ptr2 !is null, "Oops, I have a pointer to bar.value"); } void bar (scope int** ptr2) safe { int value; foo(ptr2, &value); } // Needs to be 'return scope' so that the compiler believes 'ptr1' has longer lifetime thatn 'ptr2' void foo (scope int** ptr2, scope int* ptr1) safe { foobar(*ptr2, ptr1); } int* foobar (scope int* p1, return scope int* p2) safe { p1 = p2; return p2; } ``` --
May 04 2017