Hi Hen,
2013/10/26 <bay...@apache.org> > Author: bayard > Date: Sat Oct 26 02:14:35 2013 > New Revision: 1535911 > > URL: http://svn.apache.org/r1535911 > Log: > Applying github pull request https://github.com/apache/commons-lang/pull/5, > linked as LANG-928, fixing a bug in OctalEscaper trying to parse octal > numbers longer than 3 digits > > Modified: > commons/proper/lang/trunk/src/changes/changes.xml > > commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/OctalUnescaper.java > > commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/translate/OctalUnescaperTest.java > > Modified: commons/proper/lang/trunk/src/changes/changes.xml > URL: > http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/changes/changes.xml?rev=1535911&r1=1535910&r2=1535911&view=diff > > ============================================================================== > --- commons/proper/lang/trunk/src/changes/changes.xml (original) > +++ commons/proper/lang/trunk/src/changes/changes.xml Sat Oct 26 02:14:35 > 2013 > @@ -22,6 +22,7 @@ > <body> > > <release version="3.2" date="TBA" description="Next release"> > + <action issue="LANG-928" type="fix">OctalUnescaper has bugs when > parsing octals starting with a zero</action> > Although you have rewritten the code afterwards, it seems fair to give the contributor the kudos, WDYT? > <action issue="LANG-905" type="fix">EqualsBuilder returns true when > comparing arrays, even when the elements are different</action> > <action issue="LANG-774" type="add" due-to="Erhan Bagdemir">Added > isStarted, isSuspended and isStopped to StopWatch</action> > <action issue="LANG-917" type="fix" due-to="Arne Burmeister">Fixed > exception when combining custom and choice format in > ExtendedMessageFormat</action> > > Modified: > commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/OctalUnescaper.java > URL: > http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/OctalUnescaper.java?rev=1535911&r1=1535910&r2=1535911&view=diff > > ============================================================================== > --- > commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/OctalUnescaper.java > (original) > +++ > commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/OctalUnescaper.java > Sat Oct 26 02:14:35 2013 > @@ -50,6 +50,10 @@ public class OctalUnescaper extends Char > end--; // rollback > break; > } > + // only 3 characters applicable for Octal > + if (end - start >= 3) { > + break; > + } > } > > out.write( Integer.parseInt(input.subSequence(start, > end).toString(), 8) ); > > Modified: > commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/translate/OctalUnescaperTest.java > URL: > http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/translate/OctalUnescaperTest.java?rev=1535911&r1=1535910&r2=1535911&view=diff > > ============================================================================== > --- > commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/translate/OctalUnescaperTest.java > (original) > +++ > commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/translate/OctalUnescaperTest.java > Sat Oct 26 02:14:35 2013 > @@ -44,15 +44,44 @@ public class OctalUnescaperTest { > > input = "\\378 and"; > result = oue.translate(input); > - assertEquals("Failed to unescape octal characters via the between > method", "\378 and", result); > + assertEquals("Failed to unescape octal characters via the between > method", "\37" + "8 and", result); > > input = "\\378"; > result = oue.translate(input); > - assertEquals("Failed to unescape octal characters via the between > method", "\378", result); > + assertEquals("Failed to unescape octal characters via the between > method", "\37" + "8", result); > > input = "\\1"; > result = oue.translate(input); > assertEquals("Failed to unescape octal characters via the between > method", "\1", result); > + > + input = "\\036"; > + result = oue.translate(input); > + assertEquals("Failed to unescape octal characters via the between > method", "\036", result); > + > + input = "\\0365"; > + result = oue.translate(input); > + assertEquals("Failed to unescape octal characters via the between > method", "\036" + "5", result); > + > + input = "\\003"; > + result = oue.translate(input); > + assertEquals("Failed to unescape octal characters via the between > method", "\003", result); > + > + input = "\\0003"; > + result = oue.translate(input); > + assertEquals("Failed to unescape octal characters via the between > method", "\000" + "3", result); > + } > + > + @Test > + public void testOutOfRange() { > + final OctalUnescaper oue = new OctalUnescaper(); > + > + String input = "\\999"; > + try { > + String result = oue.translate(input); > + fail("NumberFormatException was expected for input: " + > input); > + } catch(NumberFormatException nfe) { > + // expected > + } > } > > } > > > -- http://people.apache.org/~britter/ http://www.systemoutprintln.de/ http://twitter.com/BenediktRitter http://github.com/britter