Likely closure memory corruption
Iain Buclaw
ibuclaw at ubuntu.com
Mon Mar 11 07:19:25 PDT 2013
On 11 March 2013 05:46, deadalnix <deadalnix at gmail.com> wrote:
> 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<http://d.puremagic.com/issues/show_bug.cgi?id=9685>
>
> Isn't it an already known bug ?
>
Works on gdc. :o)
--
Iain Buclaw
*(p < e ? p++ : p) = (c & 0x0f) + '0';
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/digitalmars-d/attachments/20130311/95a68fff/attachment-0001.html>
More information about the Digitalmars-d
mailing list