The test suite (pretty self explanatory) ============== String[] testsuite = { "aaa{bbb}ccc{ddd}eee", // correct "aaa{bbb}ccc{", //incorrect "aaa{bbb}ccc}", //incorrect "aaa{bbb{ccc}ddd}eee" //incorrect }; Testing Andrew's fix (should handle correctly formed, and incorrectly formed by exceed size) ==================== Extracting: aaa{bbb}ccc{ddd}eeetestResult.get(0)=aaatestResult.get(1)=ccctestResult.get(2)=eeeExtracting: aaa{bbb}ccc{testResult.get(0)=aaatestResult.get(1)=ccctestResult.get(2)=ccctestResult.get(3)=ccctestResult.get(4)=ccc[OK this gets really boring at this point]testResult.get(1000)=ccc{Extraction failed: exceeded reasonable size.testExtractFIBTextArray result=false [ test terminated on second case,but A's code does prevent infinite loop] Testing my fix (where we end as soon as we know no more "}"s) ============== Extracting: aaa{bbb}ccc{ddd}eee testResult.get(0)=aaa testResult.get(1)=ccc testResult.get(2)=eee Extracting: aaa{bbb}ccc{ testResult.get(0)=aaa testResult.get(1)=ccc testResult.get(2)=ccc{ Extracting: aaa{bbb}ccc} testResult.get(0)=aaa testResult.get(1)=ccc} Extracting: aaa{bbb{ccc}ddd}eee testResult.get(0)=aaa testResult.get(1)=ddd}eee testExtractFIBTextArray result=true [passes suite] [These may not be good questions the UI sent us, but we will not fill the DB or memory]