PatchSet 7168 
Date: 2006/03/24 18:03:25
Author: guilhem
Branch: HEAD
Tag: (none) 
Log:
Fix for bug #24

        * libraries/javalib/external/classpath/java/io/PrintStream.java
        (writeChars): Catch UnsupportedEncodingException if we use the
        default encoding and replace the encoding with a known working
        one.

Members: 
        ChangeLog:1.4686->1.4687 
        libraries/javalib/external/classpath/java/io/PrintStream.java:1.2->1.3 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.4686 kaffe/ChangeLog:1.4687
--- kaffe/ChangeLog:1.4686      Fri Mar 24 11:02:52 2006
+++ kaffe/ChangeLog     Fri Mar 24 18:03:25 2006
@@ -1,3 +1,10 @@
+2006-03-24  Guilhem Lavaux  <[EMAIL PROTECTED]>
+
+       * libraries/javalib/external/classpath/java/io/PrintStream.java
+       (writeChars): Catch UnsupportedEncodingException if we use the
+       default encoding and replace the encoding with a known working
+       one.
+       
 2006-03-24  Dalibor Topic  <[EMAIL PROTECTED]>
 
        * Makefile.am (EXTRA_DIST): Added FAQ/FAQ.blackfin.
Index: kaffe/libraries/javalib/external/classpath/java/io/PrintStream.java
diff -u kaffe/libraries/javalib/external/classpath/java/io/PrintStream.java:1.2 
kaffe/libraries/javalib/external/classpath/java/io/PrintStream.java:1.3
--- kaffe/libraries/javalib/external/classpath/java/io/PrintStream.java:1.2     
Fri Jan 13 17:54:24 2006
+++ kaffe/libraries/javalib/external/classpath/java/io/PrintStream.java Fri Mar 
24 18:03:27 2006
@@ -86,6 +86,8 @@
    */
   private boolean auto_flush;
 
+  private boolean defaultEncoding;
+
   /**
    * This method intializes a new <code>PrintStream</code> object to write
    * to the specified output sink.
@@ -124,6 +126,7 @@
        this.encoding = "ISO8859_1";
     }
     this.auto_flush = auto_flush;
+    this.defaultEncoding = true;
   }
 
   /**
@@ -259,15 +262,43 @@
   private void writeChars(char[] buf, int offset, int count)
     throws IOException
   {
-      byte[] bytes = (new String(buf, offset, count)).getBytes(encoding);
-      out.write(bytes, 0, bytes.length);
+    try
+      {
+       byte[] bytes = (new String(buf, offset, count)).getBytes(encoding);
+       out.write(bytes, 0, bytes.length);
+      }
+    catch (UnsupportedEncodingException e)
+      {
+       if (defaultEncoding)
+         {
+           this.encoding = "ISO8859_1";
+           writeChars(buf, offset, count);
+         }
+       else
+         throw e;
+      }
   }
 
   private void writeChars(String str, int offset, int count)
     throws IOException
   {
-      byte[] bytes = str.substring(offset, offset+count).getBytes(encoding);
-      out.write(bytes, 0, bytes.length);
+    try
+      {
+       byte[] bytes = str.substring(offset, offset+count).getBytes(encoding);
+       out.write(bytes, 0, bytes.length);
+      }
+    catch (UnsupportedEncodingException e)
+      {
+       if (defaultEncoding)
+         {
+           this.encoding = "ISO8859_1";
+           writeChars(str, offset, count);
+         }
+       else
+         {
+           throw e;
+         }
+      }
   }
 
   /**

_______________________________________________
kaffe mailing list
[email protected]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to