Hi!

I think I found a bug in GNU Classpath, in java/text/ChoiceFormat.java.
The following Mauve test fails with CACAO (but works with JamVM?!?,
maybe a VM interface issue):

$ echo gnu/testlet/java/text/ChoiceFormat/parse | cacao RunnerProcess
newPattern=1.0#Sun|2.0#Mon|3.0#Tue|4.0#Wed|5.0#Thu|6.0#Fri|7.0#Sat
buf=Sun
stringVec=[Sun]
buf=Mon
stringVec=[Mon, Mon]
buf=Tue
stringVec=[Tue, Tue, Tue]
buf=Wed
stringVec=[Wed, Wed, Wed, Wed]
buf=Thu
stringVec=[Thu, Thu, Thu, Thu, Thu]
buf=Fri
stringVec=[Fri, Fri, Fri, Fri, Fri, Fri]
buf=Sat
stringVec=[Sat, Sat, Sat, Sat, Sat, Sat, Sat]

As you can see, Vector.addElement() adds an element and magically
replaces all other elements already in the Vector.  This is because
CPStringBuilder.toString() does not generate a copy of the object.

The attached patch simply uses StringBuilder instead of CPStringBuilder
where the toString() method is used.

- twisti

---

Index: java/text/ChoiceFormat.java
===================================================================
RCS file: /sources/classpath/classpath/java/text/ChoiceFormat.java,v
retrieving revision 1.15
diff -u -3 -p -r1.15 ChoiceFormat.java
--- java/text/ChoiceFormat.java 6 May 2008 22:20:40 -0000       1.15
+++ java/text/ChoiceFormat.java 5 Jun 2008 14:17:56 -0000
@@ -40,6 +40,7 @@ exception statement from your version. *
 package java.text;
 
 import gnu.java.lang.CPStringBuilder;
+import java.lang.StringBuilder;
 
 import java.util.Vector;
 
@@ -100,7 +101,7 @@ public class ChoiceFormat extends Number
     int index = 0, max = newPattern.length();
     Vector stringVec = new Vector ();
     Vector limitVec = new Vector ();
-    final CPStringBuilder buf = new CPStringBuilder ();
+    final StringBuilder buf = new StringBuilder ();
     
     while (true)
       {



Reply via email to