summaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2001-12-11 04:03:57 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2001-12-11 04:03:57 +0000
commit9e1687143cafca22c81037529c1d8cfe2048340b (patch)
treef0bd1b8b42ebddf95297eedc5da2982e2d850812 /libjava
parentff65d698b35e74609ea902b3d6648b95d6de1ae6 (diff)
downloadgcc-9e1687143cafca22c81037529c1d8cfe2048340b.tar.gz
For PR libgcj/1147:
* prims.cc (JvConvertArgv): Convert using current locale's encoding. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47862 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/prims.cc16
2 files changed, 18 insertions, 4 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index eb5742ab724..227bcc12196 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,5 +1,11 @@
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.
* java/lang/natClassLoader.cc: Don't include stdio.h.
(_Jv_RegisterClassHookDefault): Don't use snprintf.
diff --git a/libjava/prims.cc b/libjava/prims.cc
index f2f2d6578a2..5a4c3a6cbd8 100644
--- a/libjava/prims.cc
+++ b/libjava/prims.cc
@@ -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