[Issue 1613] New: DMD hangs on syntax error

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Oct 24 19:31:27 PDT 2007


http://d.puremagic.com/issues/show_bug.cgi?id=1613

           Summary: DMD hangs on syntax error
           Product: D
           Version: 1.022
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: minor
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: ary at esperanto.org.ar


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:".


-- 



More information about the Digitalmars-d-bugs mailing list