Commit 1ca1c91b by Tom Tromey Committed by Tom Tromey

For PR libgcj/1147:

	* prims.cc (JvConvertArgv): Convert using current locale's
	encoding.

From-SVN: r47862
parent d12a1873
2001-12-10 Tom Tromey <tromey@redhat.com> 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. Fix for PR libgcj/5064.
* java/lang/natClassLoader.cc: Don't include stdio.h. * java/lang/natClassLoader.cc: Don't include stdio.h.
(_Jv_RegisterClassHookDefault): Don't use snprintf. (_Jv_RegisterClassHookDefault): Don't use snprintf.
......
...@@ -657,12 +657,20 @@ JvConvertArgv (int argc, const char **argv) ...@@ -657,12 +657,20 @@ JvConvertArgv (int argc, const char **argv)
if (argc < 0) if (argc < 0)
argc = 0; argc = 0;
jobjectArray ar = JvNewObjectArray(argc, &StringClass, NULL); jobjectArray ar = JvNewObjectArray(argc, &StringClass, NULL);
jobject* ptr = elements(ar); jobject *ptr = elements(ar);
jbyteArray bytes = NULL;
for (int i = 0; i < argc; i++) for (int i = 0; i < argc; i++)
{ {
const char *arg = argv[i]; const char *arg = argv[i];
// FIXME - should probably use JvNewStringUTF. int len = strlen (arg);
*ptr++ = JvNewStringLatin1(arg, 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; return (JArray<jstring>*) ar;
} }
...@@ -993,7 +1001,7 @@ _Jv_RunMain (jclass klass, const char *name, int argc, const char **argv, ...@@ -993,7 +1001,7 @@ _Jv_RunMain (jclass klass, const char *name, int argc, const char **argv,
runtime = java::lang::Runtime::getRuntime (); runtime = java::lang::Runtime::getRuntime ();
arg_vec = JvConvertArgv (argc - 1, argv + 1); arg_vec = JvConvertArgv (argc - 1, argv + 1);
if (klass) if (klass)
main_thread = new gnu::gcj::runtime::FirstThread (klass, arg_vec); main_thread = new gnu::gcj::runtime::FirstThread (klass, arg_vec);
else else
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment