For PR libgcj/1147:
authorTom Tromey <tromey@redhat.com>
Tue, 11 Dec 2001 04:03:57 +0000 (04:03 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Tue, 11 Dec 2001 04:03:57 +0000 (04:03 +0000)
* prims.cc (JvConvertArgv): Convert using current locale's
encoding.

From-SVN: r47862

libjava/ChangeLog
libjava/prims.cc

index eb5742ab724b9078f8f443750f2b011d658f3203..227bcc121961e4746d6f5f6fbbe3c580e488c9ba 100644 (file)
@@ -1,3 +1,9 @@
+2001-12-10  Tom Tromey  <tromey@redhat.com>
+
+       For PR libgcj/1147:
+       * prims.cc (JvConvertArgv): Convert using current locale's
+       encoding.
+
 2001-12-10  Tom Tromey  <tromey@redhat.com>
 
        Fix for PR libgcj/5064.
index f2f2d6578a2378ecd5508a94306af030372a0982..5a4c3a6cbd85c3a89d9ebc64222b930394f18294 100644 (file)
@@ -657,12 +657,20 @@ JvConvertArgv (int argc, const char **argv)
   if (argc < 0)
     argc = 0;
   jobjectArray ar = JvNewObjectArray(argc, &StringClass, NULL);
-  jobject* ptr = elements(ar);
+  jobject *ptr = elements(ar);
+  jbyteArray bytes = NULL;
   for (int i = 0;  i < argc;  i++)
     {
       const char *arg = argv[i];
-      // FIXME - should probably use JvNewStringUTF.
-      *ptr++ = JvNewStringLatin1(arg, strlen(arg));
+      int len = strlen (arg);
+      if (bytes == NULL || bytes->length < len)
+       bytes = JvNewByteArray (len);
+      jbyte *bytePtr = elements (bytes);
+      // We assume jbyte == char.
+      memcpy (bytePtr, arg, len);
+
+      // Now convert using the default encoding.
+      *ptr++ = new java::lang::String (bytes, 0, len);
     }
   return (JArray<jstring>*) ar;
 }
@@ -993,7 +1001,7 @@ _Jv_RunMain (jclass klass, const char *name, int argc, const char **argv,
       runtime = java::lang::Runtime::getRuntime ();
 
       arg_vec = JvConvertArgv (argc - 1, argv + 1);
-      
+
       if (klass)
        main_thread = new gnu::gcj::runtime::FirstThread (klass, arg_vec);
       else