Issue 7965 - Invalid outer function scope pointer in some cases

Era Scarecrow rtcvb32 at yahoo.com
Sat Jun 16 16:45:02 PDT 2012


On Saturday, 16 June 2012 at 22:13:44 UTC, Timon Gehr wrote:
> On 06/16/2012 11:19 PM, Era Scarecrow wrote:
>> On Saturday, 16 June 2012 at 20:16:52 UTC, Denis Shelomovskij 
>> wrote:
>>> Just want to mention again that Issue 7965 is a really nasty 
>>> wrong-code bug that is difficult to find unless you know 
>>> about it.
>>>
>>> I face this Issue in almost every my D program with 
>>> non-trivial std.algorithm usage and I suppose I'm not alone.
>>>
>>> If there is no plans to fix it in near future this _must_ be 
>>> mentioned in std.algorithm Page and in other places in docs 
>>> because it's really possible to avoid it every time you use 
>>> std.algorithm.
>>>
>>> It's not a joke! Such things must be mentioned in docs or D 
>>> is unusable for non-experienced D developers.
>>>
>>> http://d.puremagic.com/issues/show_bug.cgi?id=7965
>>
>> Looks to me like a frame pointer bug for the delegate (Or lack 
>> of it?)...
>>
>> Based on the setup, it should also be illegal to pass the 
>> struct outside of the scope it's in due to the delegate in the 
>> struct (Unless the variable(s) in question are static).
>
> Passing the struct outside of the scope it is in must be legal 
> and create a heap frame if it references any of the stack 
> variables.
>
> What delegates are you talking about?

  I had the impression that a function referencing the outer frame 
automatically was a delegate; Maybe I just messed up on the 
terms..

void func(){
int x;
  void y(){x++;};

//equal to??
  auto y = delegate void(){x++;};
}


More information about the Digitalmars-d mailing list