Likely closure memory corruption

deadalnix deadalnix at gmail.com
Sun Mar 10 22:46:38 PDT 2013


On Sunday, 10 March 2013 at 21:01:11 UTC, Walter Bright wrote:
> On 3/8/2013 8:25 AM, deadalnix wrote:
>> I have a struct. The struct have a context pointer. I have 
>> this method :
>>
>> @property
>> auto save() inout {
>>     return inout(Lexer)(t, r.save, line, index);
>> }
>>
>> The context pointer IS NOT COPIED.
>>
>> Fixed it that way :
>>
>> @property
>> auto save() inout {
>>     // XXX: dmd bug, context pointer isn't copied properly
>>     // doing it manualy using black magic.
>>     // Context pointer is the last element of the struct. Here 
>> in position 9.
>>     auto ret = inout(Lexer)(t, r.save, line, index);
>>     (cast(void**) &ret)[9] = (cast(void**) &this)[9];
>>
>>     return ret;
>> }
>
> 1. We can't do anything with code snippets like that. A 
> complete, compilable example is necessary.
>
> 2. Such bug reports, along with the complete example 
> demonstrating it, needs to go into bugzilla, not here.

http://d.puremagic.com/issues/show_bug.cgi?id=9685

Isn't it an already known bug ?


More information about the Digitalmars-d mailing list