]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix crash on MS-Windows caused by recent changes
authorEli Zaretskii <eliz@gnu.org>
Wed, 7 Apr 2021 16:43:59 +0000 (19:43 +0300)
committerEli Zaretskii <eliz@gnu.org>
Wed, 7 Apr 2021 16:43:59 +0000 (19:43 +0300)
* src/pdumper.c (dump_do_dump_relocation): Don't use
expand-file-name, as this crashes on MS-Windows.  Use
file_access_p instead of emacs_fopen.

src/pdumper.c

index 9b750a33f36683542d37a55668220f187693939a..dc893c59bfab3402236cb623653f782b226d089b 100644 (file)
@@ -5276,12 +5276,13 @@ dump_do_dump_relocation (const uintptr_t dump_base,
        /* Check just once if this is a local build or Emacs was installed.  */
        if (installation_state == UNKNOWN)
          {
+           /* Can't use expand-file-name here, because we are too
+              early in the startup, and we will crash at least on
+              WINDOWSNT.  */
            Lisp_Object fname =
-             Fexpand_file_name (XCAR (comp_u->file), Vinvocation_directory);
-           FILE *file;
-           if ((file = emacs_fopen (SSDATA (ENCODE_FILE (fname)), "r")))
+             concat2 (Vinvocation_directory, XCAR (comp_u->file));
+           if (file_access_p (SSDATA (ENCODE_FILE (fname)), F_OK))
              {
-               fclose (file);
                installation_state = INSTALLED;
                fixup_eln_load_path (XCAR (comp_u->file));
              }
@@ -5293,10 +5294,10 @@ dump_do_dump_relocation (const uintptr_t dump_base,
          }
 
        comp_u->file =
-         Fexpand_file_name (installation_state == INSTALLED
-                            ? XCAR (comp_u->file) : XCDR (comp_u->file),
-                            Vinvocation_directory);
-       comp_u->handle = dynlib_open (SSDATA (comp_u->file));
+         concat2 (Vinvocation_directory,
+                  installation_state == INSTALLED
+                  ? XCAR (comp_u->file) : XCDR (comp_u->file));
+       comp_u->handle = dynlib_open (SSDATA (ENCODE_FILE (comp_u->file)));
        if (!comp_u->handle)
          error ("%s", dynlib_error ());
        load_comp_unit (comp_u, true, false);