Selaa lähdekoodia

Fix segmentation fault that only seems to happen in the buildbot's master shell environment. But I suppose the crash could manifest in other environments where getlogin() fails

rdb 15 vuotta sitten
vanhempi
sitoutus
e69958cfe9
1 muutettua tiedostoa jossa 9 lisäystä ja 6 poistoa
  1. 9 6
      direct/src/plugin/find_root_dir.cxx

+ 9 - 6
direct/src/plugin/find_root_dir.cxx

@@ -229,16 +229,19 @@ find_root_dir_default() {
     return root;
   }
 
-#else  // The Linux case
+#else  // The Linux/*BSD case
   // e.g., /home/<username>/.panda3d
 
   string root;
-  const char *uname = getlogin();
-  if (uname == NULL) uname = getenv("USER");
-
-  const passwd *pwdata = getpwnam(uname);
+  const passwd *pwdata = getpwuid(getuid());
   if (pwdata == NULL) {
-    root = getenv("HOME");
+    char *home = getenv("HOME");
+    if (home == NULL) {
+      // Beh.  Let's hope it never gets to this point.
+      return ".";
+    } else {
+      root = home;
+    }
   } else {
     root = pwdata->pw_dir;
   }