OutOfMemory Error caused by ExtendedMessageFormat
-------------------------------------------------

                 Key: LANG-509
                 URL: https://issues.apache.org/jira/browse/LANG-509
             Project: Commons Lang
          Issue Type: Bug
    Affects Versions: 2.4
         Environment: Windows XP, Tomcat 5.5.27, Sun JDK 1.6.0_13
            Reporter: Kai Hackemesser


It is possible to let ExtendedMessageFormat cause an OutOfMemory Error (Java 
heap space) - no matter how large you define the memory, because the code 
produces an endless loop that extends a StringBuffer ad infinitum.

Code to reproduce:


instantiate an ExtendedMessageFormat object using the constructor 
public ExtendedMessageFormat(String pattern, Locale locale, Map registry) 

locale and registry (not null) dosen't matter actually, but pattern as String 
looks like this:
{{The field ''{0}'' must be completed}}
notice the doubled single quotes.

The constructor then executes applyPattern(pattern)
In applyPattern, line 158 (that is inside the loop over the pattern length)  
{{appendQuotedString(pattern, pos, stripCustom, true);}} is called, it is the 
last statement for that case in the loop. 
In  appendQuotedString, line 422 the quote character gets appended to the 
return StringBuffer, then return. The problem in fact is, that the pointer 
(ParsePosition pos) isn't updated and after return the procedure will check the 
same character again and again and again. 

Primitive workaround: no use of single quotes in messages as input of 
ExtendedMessageFormat.



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to