Segmentation fault on de-referencing int field over 3 levels
Oliver Moeller
mol at verify-it.de
Fri Feb 23 01:52:02 PST 2007
Compiling the following with DMD and executing the program
yields an segmentation fault when accessing the public field
'the_date.year' of another public field 'birth':
import std.c.stdio;
import std.c.stdlib;
import std.string;
import std.date;
public class MyDate {
public:
Date the_date; // only the field 'year' is relevant
this(){ the_date.year = 1901; }
};
public class Author {
public:
MyDate birth;
};
int main(char[][] args)
{
Author author = new Author();
MyDate mydate = new MyDate();
printf("(1) accessing: mydate.the_date.year = %i\n", mydate.the_date.year);
printf("(2) accessing: author.birth.the_date.year = \n");
printf("%i\n", author.birth.the_date.year);
printf("Ok.\n");
return 0;
}
To my understanding, this access is legal; if not, then the compiler should
refuse it.
Enlighten me if I am doing something wrong here (I am new to D).
Here is the screen output sniplet: -------------------------------------
phobos:~/Lang/D/Toy/segfault> make test
/home/oli/Projects/D/DMD/dmd/bin/dmd -c -oftest_date.o test_date.d
/home/oli/Projects/D/DMD/dmd/bin/dmd -oftest_date.exe test_date.o
gcc test_date.o -o test_date.exe -m32 -lphobos -lpthread -lm
phobos:~/Lang/D/Toy/segfault> ./test_date.exe
(1) accessing: mydate.the_date.year = 1901
(2) accessing: author.birth.the_date.year =
Segmentation fault
-------------------------------------------------------------------------
Running test_date.d interpreted has the same effect (abort on (2)).
Versions:
dmd: Digital Mars D Compiler v1.0
gcc: gcc (GCC) 4.0.2 20050901 (prerelease) (SUSE Linux)
platform: PC SuSE Linux 10.0 (64 bit)
** Computers will always make mistakes, but will do so much faster tomorrow.
** ------------------------------------------------- <omoeller at verify-it.de>
More information about the Digitalmars-d-bugs
mailing list