Is this a bug?

Jerry jlquinn at optonline.net
Tue Nov 26 23:06:33 PST 2013


Jerry <jlquinn at optonline.net> writes:

> "H. S. Teoh" <hsteoh at quickfur.ath.cx> writes:
>
>> On Tue, Nov 26, 2013 at 06:33:28PM -0500, Jerry wrote:
>>> If I read correctly, the following is legal code.  If you comment out
>>> one of the case statements, it does the expected thing.  With 4 or more,
>>> it crashes.  This is with dmd 2.064.2 on Debian.
>>> 
>>> If it's a bug, I'll file a report.  Thanks!
>>> 
>>> class BB {}
>>> class DD : CC {}
>>> class CC : BB {
>>>   static CC create(string s) {
>>>     // Succeeds with 3 cases, fails with 4
>>>     switch (s) {
>>>     case "en":
>>>     case "it":
>>>     case "ru":
>>>     case "ko": return new DD;
>>>     default: throw new Exception("blech");
>>>     }
>>>   }
>>> }
>>> 
>>> void main() {
>>>     CC.create("en");
>>> }
>>> 
>>> jlquinn at wyvern:~/d$ ~/dmd2/linux/bin64/dmd switchbug.d -g
>>> jlquinn at wyvern:~/d$ ./switchbug 
>>> Segmentation fault (core dumped)
>> [...]
>>
>> No crash on dmd git HEAD, Debian/unstable (x86_64).
>>
>
> If I build dmd from the sources, the program works.  It's only the
> precompiled dmd executable that generates a broken binary.

Sorry, not true.  I had the extra case commented out.  Uncommenting it
still gives me a crashing program.


More information about the Digitalmars-d mailing list