call to super trashes pointer?
Steven Schveighoffer via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Feb 23 06:11:33 PST 2016
On 2/23/16 6:05 AM, Nicholas Wilson wrote:
> On Tuesday, 23 February 2016 at 10:47:17 UTC, Rene Zwanenburg wrote:
>> On Tuesday, 23 February 2016 at 09:16:08 UTC, Nicholas Wilson wrote:
>>> struct A
>>> {
>>> int blah;
>>> }
>>> class B
>>> {
>>> A* a;
>>> this(A* _a)
>>> {
>>> writeln(_a)
>>> a =_a;
>>> }
>>> }
>>>
>>> class C : B
>>> {
>>> this(A* _a)
>>> {
>>> writeln(_a)
>>> super(_a);
>>> }
>>> }
>>> int main(string[] args)
>>> {
>>> A a;
>>> writeln(&a);
>>> C c = new C(&a);
>>> }
>>>
>>> prints
>>> 7FFF56E787F8
>>> 7FFF56E787F8
>>> null
>>>
>>> ??? What is happening here?
>>
>> I can't reproduce this. After making a few changes to get the code to
>> compile (adding ; after the first two writeln's, and changing int main
>> to void main), everything works as expected. Which compiler and
>> version are you using?
>
> v2.067-devel-e431363
> I "fixed" it see above.
>
This is not a released version. Using both 2.067.1 and 2.068.0, I get
the expected behavior. There could have been a regression fixed between
that version and the release, I suggest you try a released version:
http://dlang.org/download.html#dmd
-Steve
More information about the Digitalmars-d-learn
mailing list