Don wrote:
strtr wrote:
strtr Wrote:
dmd(1.048/55/56) crashed on me:
AppName: dmd.exe AppVer: 0.0.0.0 ModName: unknown
ModVer: 0.0.0.0 Offset: 00000002
There is a lot of crash data but I do not know where to start looking.
I've also tried finding which part of the code is responsible, but I
haven't found it yet.
Everything is working again and I have found this piece of code which
chokes the compiler.
module main;
//Digital Mars D Compiler v1.056
//bud_win_3.04.exe -full -cleanup
enum ENUM
{
N0 = 1, //N0 = x; crashes for some values of x, ie. 1 and 10. and
not for others ie. 3.
N1,
N2,
N3,
N4,
N5,
N6,
N7,
N8,
N9,
N10,
N11,
N12,
N13,
N14, N15, N16,
N17,
N18
}
const char[][ ENUM.max + 1 ] ENUM_NAME = [
ENUM.N0 : "N0",
];
void main()
{
char[] text = `Hi`;
switch(text)
{
//case `N0`: //this works
case ENUM_NAME[ENUM.N0]: //this doesn't
//return ENUM.N0;
default:
break;
}
}
I will post it together with my previous reported enum
incomprehensibility bug if it can't be further minimized.
Excellent! I can reproduce it.
The D2 version of this code (char[] text = `Hi`.dup;) segfaults in
Expression::arraySyntaxCopy() in expression.c, with evidence of memory
corruption. The D1 version does *not* segfault there. In fact the code
compiles with the debug version of DMD1!
I think the array literal isn't getting initialized properly.
And it's a regression, introduced in DMD1.046. It worked in 1.045.