[ 
https://issues.apache.org/jira/browse/LANG-509?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Niall Pemberton updated LANG-509:
---------------------------------

    Fix Version/s:     (was: 3.0)
                   2.5

> OutOfMemory Error caused by ExtendedMessageFormat
> -------------------------------------------------
>
>                 Key: LANG-509
>                 URL: https://issues.apache.org/jira/browse/LANG-509
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.text.*
>    Affects Versions: 2.4
>         Environment: Windows XP, Tomcat 5.5.27, Sun JDK 1.6.0_13
>            Reporter: Kai Hackemesser
>             Fix For: 2.5
>
>
> 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) don'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