Bug 1613 – DMD hangs on syntax error

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D1 (retired)
Platform
All
OS
All
Creation time
2007-10-24T21:31:00Z
Last change time
2014-02-16T15:23:39Z
Keywords
ice-on-invalid-code, patch
Assigned to
bugzilla
Creator
ary

Comments

Comment #0 by ary — 2007-10-24T21:31:26Z
Compiling this piece of code: -- int x = { -- makes dmd's parser loop inifitenly, consuming the machine's memory. It also happens in 1.020. Although no one would ever write such a code, if the parser is ported and used for an IDE, it may freeze the IDE (I found it in Descent). There, it's very normal if the user stops typing at "{". Fix: in parser.d, Parser::parseInitializer, after the first loop after "braces = 1;", in the swich of the loop add a "case TOKeof:" which breaks out of the for (I'm seeing a goto there :-P). A "break" must also be added in the next while(1) loop, also in a new "case TOKeof:".
Comment #1 by aziz.koeksal — 2007-11-02T15:56:20Z
I've reported this issue already here: http://d.puremagic.com/issues/show_bug.cgi?id=1356
Comment #2 by bugzilla — 2007-11-03T21:50:43Z
Fixed dmd 1.023 and 2.007