2004/01/20 10:30:45
[org.ibex.core.git] / src / org / xwt / plat / Linux.cc
index 39ab5a8..b3a19e6 100644 (file)
@@ -8,9 +8,14 @@ extern const char **_Jv_argv;
 extern int _Jv_argc;
 
 void org::xwt::plat::Linux::fixEnvironment() {
-  // see http://lists.debian.org/debian-glibc/2003/debian-glibc-200311/msg00647.html
-    if (!strcmp("2.4.1", getenv("LD_ASSUME_KERNEL"))) {
-        putenv("LD_ASSUME_KERNEL", "2.4.1");
-        execvp(_Jv_argv[0], _Jv_argv);
+    // see http://lists.debian.org/debian-glibc/2003/debian-glibc-200311/msg00647.html
+    const char* ld_assume_kernel = getenv("LD_ASSUME_KERNEL");
+    if (ld_assume_kernel == NULL || strcmp("2.4.1", ld_assume_kernel)) {
+        int result;
+        printf("respawning self (%s) with LD_ASSUME_KERNEL=2.4.1\n", _Jv_argv[0]);
+        setenv("LD_ASSUME_KERNEL", "2.4.1", 1);
+        result = execvp(_Jv_argv[0], (char* const*)((void*)_Jv_argv));
+        printf("execvp() failed with error code %d\n", result);
+       exit(-1);
     }
 }