[Bug libfortran/51803] New: gfortran getcwd at startup

mrs at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Mon Jan 9 20:57:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51803

             Bug #: 51803
           Summary: gfortran getcwd at startup
    Classification: Unclassified
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libfortran
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: mrs@gcc.gnu.org


This code:

  memset (buf, 0, sizeof (buf));
#ifdef HAVE_GETCWD
  cwd = getcwd (buf, sizeof (buf));
#else
  cwd = "";
#endif

  /* exe_path will be cwd + "/" + argv[0] + "\0" */
  path = malloc (strlen (cwd) + 1 + strlen (argv0) + 1);
  sprintf (path, "%s%c%s", cwd, DIR_SEPARATOR, argv0);
  exe_path = path;
  please_free_exe_path_when_done = 1;

from libgfortran/runtime/main.c:store_exe_path is bad.  getcwd can fail with a
0 return status.  I didn't have getdents wired up completely in my simulator,
and fortran fails everything in the testsuite because of it.  :-(

Should be something like:

#ifdef HAVE_GETCWD
  cwd = getcwd (buf, sizeof (buf));
  if (cwd == 0)
    cwd = "";
#else



More information about the Gcc-bugs mailing list