Jerry <[email protected]> writes: > "H. S. Teoh" <[email protected]> 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@wyvern:~/d$ ~/dmd2/linux/bin64/dmd switchbug.d -g >>> jlquinn@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.
