[stringtemplate-interest] [ST4-Beta3] Endless loop and OutOfMemoryError when processing invalid template

Udo Borkowski ub at abego-software.de
Sun Jan 30 06:49:55 PST 2011


Hi,

given this (invalid) template definition (using '$', '$' delimiter):

main() ::= <<
$t()>
>>

results in these errors:

sketchpad.stg 2:17: invalid character '>'
sketchpad.stg 2:17: invalid character '<EOF>'
sketchpad.stg 2:17: invalid character '<EOF>'
sketchpad.stg 2:17: invalid character '<EOF>'
sketchpad.stg 2:17: invalid character '<EOF>'
sketchpad.stg 2:17: invalid character '<EOF>'
.
.
.
endlessly repeat the EOF error and finally ends with an 

java.lang.OutOfMemoryError: Java heap space


To work around this issue I added a check for EOF at the end of STLexer#inside():

	errMgr.lexerError(input.getSourceName(), "invalid character '"+str(c)+"'", templateToken, re);
	if (c==EOF) {
		return newToken(EOF_TYPE);
	}
	consume();


Udo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/stringtemplate-interest/attachments/20110130/57764d81/attachment.html 


More information about the stringtemplate-interest mailing list