diff options
Diffstat (limited to 'libjava/java/lang/natRuntime.cc')
-rw-r--r-- | libjava/java/lang/natRuntime.cc | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/libjava/java/lang/natRuntime.cc b/libjava/java/lang/natRuntime.cc index f21a81f..cc69385 100644 --- a/libjava/java/lang/natRuntime.cc +++ b/libjava/java/lang/natRuntime.cc @@ -108,9 +108,18 @@ java::lang::Runtime::_load (jstring path, jboolean do_search) using namespace java::lang; #ifdef USE_LTDL jint len = _Jv_GetStringUTFLength (path); - char buf[len + 1]; - jsize total = JvGetStringUTFRegion (path, 0, path->length(), buf); - buf[total] = '\0'; + char buf[len + 1 + 3]; + int offset = 0; +#ifndef WIN32 + // On Unix boxes, prefix library name with `lib', for loadLibrary. + if (do_search) + { + strcpy (buf, "lib"); + offset = 3; + } +#endif + jsize total = JvGetStringUTFRegion (path, 0, path->length(), &buf[offset]); + buf[offset + total] = '\0'; // FIXME: make sure path is absolute. lt_dlhandle h = do_search ? lt_dlopenext (buf) : lt_dlopen (buf); if (h == NULL) |